Bash脚本
我有一个字符串:
tcp 6 0 CLOSE src = 111.11.111.111 dst = 222.22.222.22 sport = 45478 dport = 5000 packets = 7 bytes = 474 src = 111.11.111.111 dst = 222.22.222.22 s port = 5000 dport = 45478 packets = 8 bytes = 550 [ASSURED] mark = 0 use = 1
我需要剪切src IP地址111.11.111.111, 如何?
答案 0 :(得分:3)
这是一种快速而肮脏的方法: 通过sed管道,如下所示:
sed -e 's/.*src=\([^ ]*\).*/\1/'
答案 1 :(得分:2)
您不需要这个外部工具。如果您从命令输出中获取字符串,您可能希望
string="$(command)"
string="${string#* src=}"
string="${string%% dst=*}"
第一行捕获所有输出。第二行切断了以src=
结尾的最短前缀。第三行中断了以dst=
结尾的最长后缀。
Shell globbing比regexps更容易!
答案 2 :(得分:1)
你可以使用awk。下面的片段获取所有src ip,而不仅仅是它的一个实例。
<command> | awk '{for(i=1;i<=NF;i++){if($i~/src/){sub("src=","",$i);print $i}}}'