【问题标题】:Make bashscript shorter with pipes使用管道使 bash 脚本更短
【发布时间】:2017-01-12 09:29:04
【问题描述】:
我有一些文本文件(所有文件在每一行都有这个方案123:abc)并且想用这些文件制作两个单独的文件。一个包含所有行(但 uniq)的大文件,其中包含标记“:”之后的字符串。
这里可行:
cat *.txt >> bigtextfile.txt
sort -u bigtextfile.txt -o bigtextfile.txt
cat bigtextfile.txt | cut -d: -f2 >> bigtextfile-filtered.txt
但是我可以用管道做这个更短吗?
【问题讨论】:
标签:
linux
bash
file
pipe
uniq
【解决方案1】:
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
【解决方案2】:
我建议:
sort -u *.txt | cut -d: -f2 >> bigtextfile-filtered.txt
【解决方案3】:
试试这个:
cat *.txt | sort -u | cut -d: -f2 >> bigtextfile-filtered.txt