sed提取被其它字符包围的ip地址

文件的内容如下:

wejrjr 99sf sdjsjdkf ip192.168.12.2iiio kksdf

wejrjr 99sf sdjsjdkf 192.168.12.2 kksdf

wejrjr 99sf sdjsjdkf io192.168.12.2 kksdf

wejrjr 99sf sdjsjdkf 192.168.12.2dddd kksdf

sed语句:

sed -n 's/\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\).*/\n\1/;s/^.*\n//p'

第一个s去掉ip地址后面的字符,并在ip地址前面插入换行符用于第二个s,第二个s把换行符及前面的字符替换成空,留下的就是ip地址了。

sed正则中只有 ^ . * & $  \  [] 这几个字符字符不加\(反斜杠)就具有特殊含义, 其它要用到其特殊含义都要用\

 应用举例:

扫描一个网段,发现存活主机 然后按ip地址排序,去除地址列表中的第一个(网关)

nmap 192.168.xxx.0/24 | sed -n 's/\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\).*/\n\1/;s/^.*\n//p' | sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 | sed 1d >host.list



你可能感兴趣的:(linux,bash,sed)