我得到了一个 Perl one-liner。它具有以下形式:
perl -pe'...'
Run Code Online (Sandbox Code Playgroud)
如何指定要处理的文件到程序?
我有一个文件 - 一个,并且存在一些继续空行(多个),见下文:
cat a
1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)
所以首先我想知道是否存在继续空行,我试过了
cat a | grep '\n\n\n'
Run Code Online (Sandbox Code Playgroud)
没什么输出.所以我必须使用以下方式
vi a
:set list
/\n\n\n
Run Code Online (Sandbox Code Playgroud)
所以我想知道是否存在其他shell命令可以轻松实现这个?然后,如果存在两个或更多的空行我想将它们转换为一个?见下文
1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)
起初我试过下面的shell
sed 's/\n\n\(\n\)*/\n\n/g' a
Run Code Online (Sandbox Code Playgroud)
它不起作用,然后我尝试了这个shell
cat a | tr '\n' '$' | sed 's/$$\(\$\)*/$$/g' | tr '$' '\n'
Run Code Online (Sandbox Code Playgroud)
这次它有效.而且我想知道是否存在其他方式可以实现这一点?