AWK:新列未正确对齐

时间:2016-07-19 22:39:14

标签: bash awk

使用awk在最后一列之后的文本文件中创建新的数据列。我的最后一列主要是IP地址,但可能是一些文本行,如下所示:

192.168.50.25
192.168.111.145
Unknown

我用来创建新列的命令是:

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

我正在使用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 个答案:

答案 0 :(得分:1)

第一列中某些行上的文字延伸到第一个tabstop之后,而在其他行上则没有。

如果您想要以视觉上很好的方式排列内容,请尝试/libs/cq/ui/rte/core/HtmlProcessor.js

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