给定一个文本,
$ cat a.txt
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam at magna sed libero accumsan ultrices. Proin varius tortor risus, at pulvinar quam auctor
vitae.
Etiam iaculis ipsum quis lacus convallis finibus. Nunc fermentum, nunc sit amet egestas congue, odio quam sollicitudin velit, quis venenatis augue
nibh sed tortor.
我无法使用此命令删除双空行。
$ tr '\n\n' '\n' < a.txt
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam at magna sed libero accumsan ultrices. Proin varius tortor risus, at pulvinar quam auctor
vitae.
Etiam iaculis ipsum quis lacus convallis finibus. Nunc fermentum, nunc sit amet egestas congue, odio quam sollicitudin velit, quis venenatis augue
nibh sed tortor.
用其他 char 作品替换单个新行,是不是很奇怪?
tr
一次只看一个字符,所以tr ab cd
告诉改变a
->c
和b
->d
。它不关心字符的输入顺序,或者它们中的任何一个是否丢失,所以:如果第二个列表较短,则通过重复最后一个字符将其扩展到第一个列表的长度。因此
tr abc d
,将任何a
,b
,c
to更改为d
, 并将tr '\n\n' '\n'
换行符更改为换行符,这不会做任何事情。也就是说,在替换后
-s
可以选择squeeze
相同的字符,因此tr -d '\n' '\n'
可以用换行符替换换行符,然后在一行中只留下一个换行符:请注意,在您的示例中,您有两个空行,因此连续三个换行符。如果您想删除换行符,以便段落之间只剩下一个空行(两个换行符),那么我认为您不能使用
tr
. 但是你可以使用 egawk
。从test.txt
上面: