2016-07-19 72 views
1

使用awk在最後一列之後的文本文件中創建新列數據。我的最後一欄大多是IP地址,但可能會有一些文本行,看起來像這樣:AWK:新列未正確對齊

192.168.50.25 
192.168.111.145 
Unknown 

我使用創建新列的命令是:

grep '102548' file | awk -v OFS='\t' '{print $0, "2018-10-22"}' 

我grepping爲102548原因我只想讓awk在包含該字符串的行上工作。下面是從命令我的輸出:

192.168.50.25 2018-10-22 
192.168.111.145   2018-10-22 
Unknown   2018-10-22 
172.16.15.145   2018-10-22 

這似乎是沒有無緣無故就什麼左邊列,但新列的佈局,雖然未對齊,隨機,始終以這種格式

2018-10-22 
      2018-10-22 
      2018-10-22 
    2018-10-22 
      2018-10-22 

所以看起來「重疊」總是相同的。我怎樣才能構建我的命令,這樣我總能得到這種分離?

192.168.50.25  2018-10-22 
192.168.111.145  2018-10-22 
Unknown    2018-10-22 
172.16.15.145  2018-10-22 

回答

1

您的第一列中的某些行上的文本延伸過第一個tabstop,而在其他行中則不是。

如果你想要的東西在視覺上很好的方式一字排開,嘗試column -t

$ awk '{print $0, "2018-10-22"}' file | column -t 
192.168.50.25 2018-10-22 
192.168.111.145 2018-10-22 
Unknown   2018-10-22 

以上線了基於任何空白列。如果您只希望製表符分隔列(意思是列可以包含空格),請嘗試:

$ awk '{print $0, "2018-10-22"}' OFS='\t' file | column -s$'\t' -t 
192.168.50.25 2018-10-22 
192.168.111.145 2018-10-22 
Unknown   2018-10-22 
+1

啊!列是它!儘管我不得不追加「column -s $'\ t'-t」來獲得我需要的確切格式。 – user53029