2016-08-12 48 views
-2

刪除字符的特定圖案的文件的A.TXT含量:bash中:從線

10.39.105.16tcp(1234) ABCDEF02 
10.49.105.13tcp(521) ABCDEFV01 
10.19.105.12tcp(1241) ABCDEFV01 
10.29.105.20tcp(1222) ABCDEF03 
10.39.104.9tcp(131)  ABCDEF21 
10.49.104.34tcp(1512) ABCDEF22 
10.89.104.120tcp(1384) ABCDEF32  

如何實現以下輸出:

10.39.105.10 ABCDEF02 
10.49.105.13 ABCDEFV01 
10.19.105.13 ABCDEFV01 
10.29.105.20 ABCDEF03 
10.39.104.1 ABCDEF21 
10.49.104.2 ABCDEF22 
10.89.104.130 ABCDEF32 

如何清除tcp(*)上面文件的每一行嗎?

+0

cat a.txt | cut -d $'\ t'-f1 |剪下-d $'t'-f1> 1和cat a.txt |削減-d $'\ t'-f2> 2並粘貼-d $「\ t」1 2 ..它的工作,但我只是很好奇在單一命令實現它。 – Srikanth

+2

在你的例子中,tcp前面的最後一個數字也改變了,那是正確的? –

回答

1

您可以使用SED:

sed 's/tcp([0-9]\+)\s\+/ /' a.txt 

這也將獲得TCP後襬脫尾隨空間(*),並因爲它出現在你的輸出用一個空格替換它。

要改變實際的文件(而不僅僅是輸出),添加-i選項就地:

sed -i 's/tcp([0-9]\+)\s\+/ /' a.txt 
+1

我已經明確提到了我在回覆您的評論時的嘗試。你可以看到。 – Srikanth

1

取決於你正在努力實現這可能是答案是什麼:

awk '{sub(/tcp(.+)/,"",$1)}1' file 

    10.39.105.16 ABCDEF02 
    10.49.105.13 ABCDEFV01 
    10.19.105.12 ABCDEFV01 
    10.29.105.20 ABCDEF03 
    10.39.104.9 ABCDEF21 
    10.49.104.34 ABCDEF22 
    10.89.104.120 ABCDEF32