sed删除第三次出现的分隔符

时间:2012-04-06 11:37:01

标签: bash sed

输入文件如下所示:

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

我试过了:

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

但它一直在删除:16而不是删除:80

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

尝试匹配IP和端口,并将其替换为IP。

答案 1 :(得分:0)

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

答案 2 :(得分: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