UNIX:使用 tr 删除空行

UNIX: using tr to delete empty lines

我已经看到它是使用 sed 完成的(如果你愿意写下如何在 sed 中完成它并解释它背后的正则表达式,我也会很感激),但我想知道如何使用 tr.

我的想法是:cat file|tr -d ^'\n'^\n,但第一个删除每个'\n',第二个none。

tr 对字符流进行操作,而不是对行流进行操作(这是 sed 和 awk 等的默认设置)。 -d 标志删除字符列表中的任何字符。 tr -d '\n' 将删除流中的所有换行符。

我自己不确定是否可以使用 tr 删除空行。

使用 sed sed '/^$/d'^ 匹配行首。 $ 匹配行尾 d 表示您希望 sed 删除任何匹配的内容。然而,这类问题在其他地方得到了更全面的回答,所以我会回到 google 并找到一个全面的 sed 或 unix 教程。

tr on linux,至少,可以压缩重复字符:

echo -ne $a
the quick
brown fox

jumps over
echo -ne $a |tr -s '\n'
the quick
brown fox
jumps over

另一个解决方案是grep . file

trtranslate 的缩写。它是将一组字符转换为另一组字符。这与从文件中删除空行无关,您可以使用其他几种工具(例如 sed、awk、grep)。

使用强制POSIX工具删除空行的简单方法是:

grep '.' file
grep -v '^$' file

sed -n '/./p' file
sed '/^$/d' file

awk '/./' file
awk '!/^$/' file
awk '[=10=] != ""' file
awk 'length([=10=]) != 0' file