2012-04-06 128 views
1

输入文件看起来像这样的第三次出现:sed将删除分隔符

Jan 23 14:57:16 TCP 217.79.188.21:80 in 

我想:

sed 's/:[^:]* in/ in/' 

,但会将删除:16而不是去除:80

我该如何解决这个问题?

+0

如果是':80'次数,每次,只要使用':80英寸'为sed条件 – hjpotter92 2012-04-06 11:39:39

+5

对我来说,它只是工作:$ echo“Jan 23 14:57:16 TCP 217.79.188.21:80 in”| sed's /:[^:] * in/in /'结果为 Jan 23 14:57:16 TCP 217.79.188.21 in – rednaw 2012-04-06 11:41:47

+0

也适用于我,公式是正确的 – wisent 2012-04-06 12:11:43

回答

0

这可能会为你工作:

echo "Jan 23 14:57:16 TCP 217.79.188.21:80 in" | sed 's/:..//3' 
Jan 23 14:57:16 TCP 217.79.188.21 in 

或(更可能是端口号可以是任意数字):

echo "Jan 23 14:57:16 TCP 217.79.188.21:80 in" | sed 's/:[^ ]*//2' 
Jan 23 14:57:16 TCP 217.79.188.21 in 
0

尝试匹配IP和端口,并用IP替换它。

+0

我在我的awk语句中有一个错字。抱歉的家伙,用户错误。无论如何感谢您的答复。 – Jim 2012-04-06 12:00:59

+0

请编辑您的问题,以表明此线程已解决,否则,人们必须通读所有消息才能找到没有任何帮助的信息。祝你好运。 – shellter 2012-04-06 14:26:38

0
sed -E -e 's/:[[:digit:]]{1,3} in/ in/'