2009-12-31 81 views
2

bash脚本如何从bash中的字符串中删除一些文本?

我有一个字符串:

TCP 6 0 CLOSE SRC = 111.11.111.111 DST = 222.22.222.22运动= 45478 DPORT = 5000组的分组= 7个字节= 474 SRC = 111.11.111.111 DST = 222.22.222.22小号 端口= 5000 DPORT = 45478个分组= 8个字节= 550 [ASSURED]标记= 0使用= 1

我需要切割的src IP地址111.11.111.111, 如何?

回答

3

这里有一个快速和肮脏的方式做到这一点: 管它通过战略经济对话是这样的:

sed -e 's/.*src=\([^ ]*\).*/\1/' 
+0

感谢它的效果,regs对我来说太难了:) – bymaker 2009-12-31 06:38:30

2

你不需要为这一个外部工具。如果你要在命令输出的字符串,而且很有可能,你想

string="$(command)" 
string="${string#* src=}" 
string="${string%% dst=*}" 

第一行捕获所有的输出。第二行切断以src=结尾的最短前缀。第三行剪切最后的后缀dst=

shell globbing比regexps更容易!

1

你可以使用awk。下面的代码片段获取所有src ip,而不仅仅是它的一个实例。

<command> | awk '{for(i=1;i<=NF;i++){if($i~/src/){sub("src=","",$i);print $i}}}' 
相关问题