【问题标题】:merge specific line using awk and sed使用 awk 和 sed 合并特定行
【发布时间】:2015-02-24 22:43:16
【问题描述】:

我想合并特定的行

输入:

AAA
BBB
CCC
DDD
EEE
AAA
BBB
DDD
CCC
EEE

输出应该是

AAA
BBB
CCC DDD
EEE
AAA
BBB
DDD
CCC EEE

我想搜索 CCC 并与它合并下一行。

我尝试过使用 awk 命令但没有成功

【问题讨论】:

    标签: linux unix command-line command


    【解决方案1】:

    使用 awk 模式,如果该行与 /CCC/ 匹配,则打印该行并在末尾添加一个空格并继续下一行。否则 (1),打印该行。

    awk '/CCC/ { printf("%s ", $0); next } 1' file
    

    【讨论】:

    • 还有一个问题,我想将输出存储在同一个文件中,我不想使用 awk ... > newfile
    • 然后 sed 使用 -i 选项,如 sed -i '/CCC/ { N; s/\n/ / }' file
    【解决方案2】:

    使用

    sed '/CCC/ { N; s/\n/ / }' file
    

    使用

    awk '{ ORS=(/CCC/ ? FS : RS) }1' file
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-11
      • 1970-01-01
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 2015-02-21
      • 1970-01-01
      • 2011-09-26
      相关资源
      最近更新 更多