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

如何用Vim、sed或awk仅删除奇数行的换行符?

合并文件中的奇数行与后续偶数行(Vim、sed、awk实现)

Vim 方法

直接在Vim里执行命令就能完成:

:%s/\n\(.\)/ \1/g

这个命令会匹配每一行末尾的换行符加上下一行的第一个字符,把换行符替换成空格,从而把奇数行和它后面的偶数行拼到一起。

或者用更直观的逐行处理方式:

:g/^line/norm J

g/^line 会选中所有以line开头的行(也就是你的奇数行),norm J 是在普通模式下执行J命令,把当前行和下一行合并,中间用空格分隔。

sed 方法

一行命令就能搞定:

sed 'N;s/\n/ /' 文件名

N命令会把下一行内容追加到当前模式空间,s/\n/ /把模式空间里的换行符替换成空格,完成奇数行和偶数行的合并。如果需要直接修改原文件,加上-i参数:

sed -i 'N;s/\n/ /' 文件名

awk 方法

通过判断行号来实现:奇数行先暂存内容,偶数行时和暂存的内容拼接输出:

awk 'NR%2==1{line=$0;next} {print line " " $0}' 文件名
  • NR%2==1 识别奇数行,把行内容存到变量line里,next跳过后续操作
  • 遇到偶数行时,打印暂存的line加空格再加当前行内容

如果文件最后一行是奇数行,上面的命令会漏掉它,可以调整确保所有行都被处理:

awk 'NR%2==1{line=$0;next} {print line " " $0} END{if(NR%2==1) print line}' 文件名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 18:12:12