用管道缩短bashscript

时间:2017-01-12 09:29:05

标签: linux bash file pipe uniq

我有一些文本文件(所有文件在每一行123:abc都有这个方案),并希望用这些文件制作两个单独的文件。一个包含所有行(但是uniq)的大文件,以及带有符号“:”之后的字符串的文件。

这在这里有效:

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

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

我建议:

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

答案 2 :(得分:0)

试试这个:

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