使用管道使 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
我有一些文本文件(所有文件的每一行都有这个方案 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