我有一个包含空行的文档(\n \n).它们可以用sed删除:
echo $'a\n\nb'|sed -e '/^$/d'
Run Code Online (Sandbox Code Playgroud)
但是我如何用perl中的普通正则表达式做到这一点?以下任何内容都没有显示任何结果.
echo $'a\n\nb'|perl -p -e 's/\n\n/\n/s'
Run Code Online (Sandbox Code Playgroud)
Sin*_*nür 13
你需要使用s/^\n\z//.输入是逐行读取的,因此您永远不会获得多个换行符.相反,消除不包含任何其他字符的行.你应该调用perl使用
perl -ne 's/^\n\z//; print'
Run Code Online (Sandbox Code Playgroud)
无需/s切换.
不打印空行的较窄问题更直接:
$(input) | perl -ne 'print if /\S/'
Run Code Online (Sandbox Code Playgroud)
将输出除仅包含空格的行之外的所有行.