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

问题描述 投票:0回答:1

我正在尝试处理一个以制表符分隔的表,其中一些单元格具有换行符。这些表是从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工具有一个简单的方法吗?我已经尝试了一下,但没有找到一个。

unix text-processing
1个回答
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

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

© www.soinside.com 2019 - 2024. All rights reserved.