使用Unix命令行工具修复明文表中的换行

时间:2017-12-21 18:10:49

标签: unix text-processing

我试图处理一个以制表符分隔的表,其中一些单元格有换行符。表格是从PDF表格中自动提取出来的,如下所示:

1   UNITED STATES OF    3797
    AMERICA
2   CANADA  3855
3   ISLAMIC REPUBLIC    636
    OF IRAN

其中每个文本行中的左侧列仅在该行实际启动新数据条目时才有条目。 (我已经使用空格来模拟制表符间距的效果,因为StackOverflow不允许我输入制表符。) 我想找到一些简单的方法将此表转换为以下内容, 理想情况下,使用面向行的Unix文本处理工具:

1   UNITED STATES OF AMERICA    3797
2   CANADA  3855
3   ISLAMIC REPUBLIC OF IRAN    636

使用标准的Unix工具有一种简单的方法吗?我已经尝试过一点但没有找到一个。

1 个答案:

答案 0 :(得分:0)

你可以试试这个awk

awk -F '\t' '
NF==3{
  if(b)
    print b
  b=$0
  }
NF==2{
  split(b,a,FS)
  b=a[1] FS $2 " " a[2] FS a[3]
  }
END{
  print b
  }
' infile

您必须根据需要重新排序输出