You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用sed将换行替换为分号(每第三个换行除外)

嘿,这个问题我刚好处理过!咱们分两种常见场景来说明,你可以对应自己的需求来选:

场景1:给除了每第3行(第3、6、9...行)之外的行尾加;

如果你的需求是让前两行末尾加分号,第3行保持原样,然后重复这个规律(第4、5行加,第6行不加),用这个sed命令就可以:

sed '3~3!s/$/;/' your_file.txt

命令解释:

  • 3~3是sed的地址步长语法,意思是从第3行开始,每隔3行选中一行(也就是第3、6、9...行);
  • !表示“对不被选中的行执行后面的替换命令”,所以剩下的第1、2、4、5、7、8...行都会被加上行尾分号,而目标特殊行保持原样。

举个实际例子,假设原文件内容是:

line1
line2
line3
line4
line5
line6

执行命令后输出就会变成:

line1;
line2;
line3
line4;
line5;
line6

场景2:把每3行合并成一行,再在末尾加一个;

如果你的需求是把连续3行内容合并成一行,然后只在整行末尾加一个分号,那用这个命令:

sed 'N;N;s/\n/ /g;s/$/;/' your_file.txt

命令解释:

  • 连续两次N:把当前行的下两行都追加到sed的模式空间里,这样一次就处理3行内容;
  • s/\n/ /g:把这3行之间的换行符替换成空格,把多行合并成一行;
  • s/$/;/:最后在合并后的整行末尾加上分号。

还是用上面的原文件例子,执行后输出会是:

line1 line2 line3;
line4 line5 line6;

内容的提问来源于stack exchange,提问作者user2685970

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:56:04