如何使用tr(1)从非空行删除换行符('\n',0x0A)?

Mar*_*tin 5 bash perl sed tr

我有一个名为file1的文件,其中包含以下内容:

The answer t
o your question 

A conclusive a
nswer isn’t al
ways possible.

When in doubt, ask pe
ople to cite their so
urces, or to explain

Even if we don’t agre
e with you, or tell y
ou.
Run Code Online (Sandbox Code Playgroud)

我想将file1转换为file2.后者应如下所示:

The answer to your question

A conclusive answer isn’t always possible.

When in doubt, ask people to cite their sources, or to explain

Even if we don’t agree with you, or tell you.
Run Code Online (Sandbox Code Playgroud)

如果我只是执行cat file1 | tr -d "\n" > file2",将删除所有换行符.何你只删除那些使用该实用程序在非空行上的换行符tr(1)

gle*_*man 9

perl -00 -lpe 'tr/\n//d'
Run Code Online (Sandbox Code Playgroud)

-00是Perl的"段落"模式,用一个或多个空行作为分隔符读取输入.-l将系统换行符附加到print命令,因此删除输入中的所有换行符是安全的.