【问题标题】:Need to create a single record from 3 consecutive lines of text需要从 3 行连续的文本中创建一条记录
【发布时间】:2015-10-14 16:17:47
【问题描述】:

我可以很容易地编写一个小解析程序来完成这项任务,但我只知道一些 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

哦

【问题讨论】:

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


    【解决方案1】:

    使用 cat and paste 来看看魔法

    cat inputfile.txt | paste - - - 
    

    【讨论】:

    • 哇,paste 对我来说是一个新的发现,真是太棒了!没有比这更简单的了。华丽的narendra,绝对华丽:)
    【解决方案2】:

    Perl 的救援:

     perl -pe 'chomp if $. % 3' < input
    
    • -p逐行处理输入,打印每一行;
    • chomp 删除最后的换行符;
    • $. 包含输入的行号;
    • % 是模运算符。

    【讨论】:

      【解决方案3】:
      perl -alne '$a.=$_; if($.%3==0){print $a; $a=""}' filename
      

      【讨论】:

        猜你喜欢
        • 2023-01-26
        • 1970-01-01
        • 2018-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多