使用管道使 bashscript 更短

Make bashscript shorter with pipes

我有一些文本文件(所有文件的每一行都有这个方案 123:abc),我想用它们制作两个单独的文件。一个包含所有行(但 uniq)的大文件以及一个包含标记“:”之后的字符串的文件。

这里有效:

cat *.txt >> bigtextfile.txt 
sort -u bigtextfile.txt -o bigtextfile.txt 
cat bigtextfile.txt | cut -d: -f2 >> bigtextfile-filtered.txt

但是我可以用管道做的更短吗?

我建议:

sort -u *.txt | cut -d: -f2 >> bigtextfile-filtered.txt

sort 接受多个文件输入,因此您可以一次生成 bigtextfile.txt :

sort -u *.txt -o bigtextfile.txt

cut 也接受文件输入参数,不需要 cat :

cut -d: -f2 bigtextfile.txt >> bigtextfile-filtered.txt

如果您不需要 bigtextfile.txt 本身,只是将其用作生成 bigtextfile-filtered.txt 的中间体,您可以在一行中完成:

sort -u *.txt | cut -d: -f2 >> bigtextfile-filtered.txt

试试这个:

cat *.txt | sort -u | cut -d: -f2 >> bigtextfile-filtered.txt