需要从3个连续的文本行创建单个记录

时间:2015-10-14 16:17:47

标签: linux command-line command-line-tool

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

        .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

0

3 个答案:

答案 0 :(得分:2)

使用cat and paste并查看魔法

cat inputfile.txt | paste - - - 

答案 1 :(得分:1)

Perl救援:

 perl -pe 'chomp if $. % 3' < input
  • -p逐行处理输入行;
  • chomp删除了最终换行符;
  • $.包含输入行号;
  • %是模运算符。

答案 2 :(得分:0)

perl -alne '$a.=$_; if($.%3==0){print $a; $a=""}' filename