如何用Bash自动格式化文本文件:合并非空行至前一行
段落合并为单行的自动化解决方案
使用sed命令实现
直接执行以下sed命令即可完成需求:
sed -e '/^$/!{N;s/\n/ /;P;D}' 你的输入文件名.txt
命令说明:
/^$/!匹配所有非空行N将下一行内容读取到当前处理的模式空间中s/\n/ /把换行符替换为空格,实现行内容合并P;D打印模式空间的第一部分并删除,循环处理直到遇到空行,以此保留段落间的空行间隔
使用awk命令实现
如果更偏好awk工具,可使用以下命令组合:
awk 'BEGIN{ORS=""} /^$/{print "\n\n"; next} {print $0 " "}' 你的输入文件名.txt | sed 's/ $//'
命令说明:
BEGIN{ORS=""}设置输出记录分隔符为空,让内容连续输出/^$/匹配到空行时,输出两个换行来保留段落之间的间隔- 非空行则输出内容并追加空格,最后通过sed移除每行末尾多余的空格
内容的提问来源于stack exchange,提问作者Rusnnja
相关产品推荐
相关产品推荐

