2012-04-06 176 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/'