peterh Asked: 2024-01-15 01:28:07 +0800 CST2024-01-15 01:28:07 +0800 CST 2024-01-15 01:28:07 +0800 CST 如何在 sed 中用单个空行替换连续的空行? 772 我有一个文件喜欢有连续的空行(更清楚地说,只有空白行)。我想用一个来代替所有的。 我更愿意sed(恕我直言,这个任务是awk微不足道的)。 sed 2 个回答 Voted Best Answer don_crissti 2024-01-15T01:44:43+08:002024-01-15T01:44:43+08:00 要压缩连续的空行(零字符行),您可以使用N;P;D cycle: sed '$!N;/^\n$/!P;D' infile 要压缩连续的空白行,只需更改正则表达式以考虑可能的空白: sed '$!N;/^[[:blank:]]*\n[[:blank:]]*$/!P;D' infile FelixJN 2024-01-15T19:34:50+08:002024-01-15T19:34:50+08:00 如果您有GNU sed可用(并且它不会与您的脚本冲突),您可以使用-z零分隔行的标志,然后使用更简单的 REGEX,例如: sed -z 's/\n[\n ]*/\n/g' infile 请注意,这-z不是POSIX。
要压缩连续的空行(零字符行),您可以使用
N;P;D cycle
:要压缩连续的空白行,只需更改正则表达式以考虑可能的空白:
如果您有GNU
sed
可用(并且它不会与您的脚本冲突),您可以使用-z
零分隔行的标志,然后使用更简单的 REGEX,例如:请注意,这
-z
不是POSIX。