需要从 3 行连续的文本创建一条记录

Need to create a single record from 3 consecutive lines of text

我可以轻松编写一个小的解析程序来完成这项任务,但我只知道一些 linux 命令行工具大师可以在这里教我一些新东西。我已经拆开一堆文件来收集一些数据,这样我就可以用它创建一个 table。数据目前的格式为:

        .serviceNum=6360,
        .transportId=1518,
        .suid=6360,
        .serviceNum=6361,
        .transportId=1518,
        .suid=6361,
        .serviceNum=6362,
        .transportId=1518,
        .suid=6362,
        .serviceNum=6359,
        .transportId=1518,
        .suid=6359,
        .serviceNum=203,
        .transportId=117,
        .suid=20203,
        .serviceNum=9436,
        .transportId=919,
        .suid=16294,
        .serviceNum=9524,
        .transportId=906,
        .suid=17613,
        .serviceNum=9439,
        .transportId=917,
        .suid=9439,

我想要的是:

.serviceNum=6360,.transportId=1518,.suid=6360,
.serviceNum=6361,.transportId=1518,.suid=6361,
.serviceNum=6362,.transportId=1518,.suid=6362,
.serviceNum=6359,.transportId=1518,.suid=6359,
.serviceNum=203,.transportId=117,.suid=20203,
.serviceNum=9436,.transportId=919,.suid=16294,
.serviceNum=9524,.transportId=906,.suid=17613,
.serviceNum=9439,.transportId=917,.suid=9439,

所以,问题是,是否有一个 linux 命令行工具可以以某种方式读取文件并自动删除每个第 2 行和第 3 行末尾的 EOL/CR?我见过老派 linux 大师在命令行上做出令人难以置信的事情,这是我认为值得我花时间询问的例子之一。 :)

TIA

O

Perl 来拯救:

 perl -pe 'chomp if $. % 3' < input
  • -p逐行打印每行处理输入;
  • chomp 删除最后的换行符;
  • $.包含输入行号;
  • % 是模运算符。
perl -alne '$a.=$_; if($.%3==0){print $a; $a=""}' filename

使用 cat 和 paste 看看魔法

cat inputfile.txt | paste - - -