我见过它是用sed完成的(如果你愿意写下如何用sed完成它并解释它背后的regex,我也会很感激(,但我想知道如何用tr.完成它
我的想法是:cat file|tr -d ^'n'
或^n
,但第一个删除了每个"\n",第二个没有。
另一个解决方案是grep . file
。
tr在linux上至少可以压缩重复字符:
echo -ne $a
the quick
brown fox
jumps over
echo -ne $a |tr -s 'n'
the quick
brown fox
jumps over
tr操作字符流,而不是行流(这是sed、awk和whatnot的默认值(。-d标志将删除字符列表中的任何字符。tr -d 'n'
将删除流中的所有换行符。
我自己也不确定你是否可以使用tr.删除空行
使用sedsed '/^$/d'
。^
匹配前线。$
匹配行的末尾d
表示您希望sed删除与之匹配的任何内容。然而,这类问题在其他地方得到了更全面的回答,所以我会回到谷歌,找到一个全面的sed或unix教程。
tr
是translate的缩写。它是将一组字符转换为另一组字符。这与从文件中删除空行无关,还有其他几种工具可以做到这一点(例如sed、awk、grep(。
使用强制POSIX工具删除空行的简单方法有:
grep '.' file
grep -v '^$' file
sed -n '/./p' file
sed '/^$/d' file
awk '/./' file
awk '!/^$/' file
awk '$0 != ""' file
awk 'length($0) != 0' file