sed 进行行合并

可以使用 sed 的 N 命令将相邻两行合并为一行,并通过替换换行符实现格式调整。以下是具体命令和解释:


方法 1:直接合并相邻两行

bash

复制

sed 'N;s/\n/ /' input.txt
  • 作用
    将文件的第1行与第2行合并、第3行与第4行合并,以此类推。

  • 关键参数

    • N:读取下一行到模式空间(Pattern Space),与当前行合并。

    • s/\n/ /:将合并后的两行之间的换行符替换为空格(可替换为其他字符,如逗号 ,)。

  • 示例
    输入文件 input.txt

    复制

    Line1
    Line2
    Line3
    Line4

    输出结果:

    复制

    Line1 Line2
    Line3 Line4

方法 2:指定步长合并(GNU sed 适用)

bash

复制

sed '1~2{N;s/\n/ /}' input.txt
  • 作用
    从第1行开始,每隔一行(即处理所有奇数行)执行合并操作,效果与上述命令一致。

  • 关键参数

    • 1~2:匹配起始行号为1,步长为2(即处理第1、3、5…行)。

    • N 和替换逻辑同上。


注意事项

  1. 奇数行处理
    如果文件总行数为奇数,最后一行会单独保留(不会被合并)。例如:

    bash

    复制

    # 输入文件
    Line1
    Line2
    Line3
    
    # 输出结果
    Line1 Line2
    Line3
  2. 换行符替换

    • 默认用空格连接两行内容,可根据需求调整替换符:

      bash

      复制

      sed 'N;s/\n/,/' input.txt      # 用逗号连接
      sed 'N;s/\n/\t/' input.txt     # 用制表符连接
  3. 原地修改文件(谨慎使用)
    若需直接修改原文件,可添加 -i 参数(备份原文件可加 -i.bak):

    bash

    复制

    sed -i 'N;s/\n/ /' input.txt     # 直接修改文件
    sed -i.bak 'N;s/\n/ /' input.txt # 备份后修改

扩展场景

  • 合并时保留换行符
    如果仅合并行但不删除换行符(如生成 CSV 格式):

    bash

    复制

    sed 'N;s/\n/,/;' input.txt > output.csv
  • 处理含空行的文件
    若文件存在空行,可先删除空行再合并:

    bash

    复制

    sed '/^$/d; N;s/\n/ /' input.txt

通过上述方法,可以高效地将文件中的相邻两行合并为一行,适用于日志处理、数据格式转换等场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值