如何通过bash,pipe选择不同的行?

时间:2013-07-30 11:21:03

标签: bash grep pipe

我的任务
我有一个文件A.txt,内容如下。

aijdish uhuih
buh iiu hhuih
zhuh hiu
d uhiuhg ui
...

我想选择包含这些词aijdishdbuh的行... 我只知道我可以:

cat A.txt | grep "aijdish" > temp.txt
cat A.txt | grep "d" >> temp.txt
cat A.txt | grep "buh" >> temp.txt
...

但是我这几次需要选择几千个单词,我怎样才能在bash下执行此操作?

3 个答案:

答案 0 :(得分:3)

由于您想要查找多个单词,我建议将模式放入文件并使用greps -f选项:

$ cat grep-pattern.txt
aijdish
buh
d

$ grep -f grep-pattern.txt inputfile
aijdish uhuih
buh iiu hhuih
d uhiuhg ui

但是如果您有像 d 这样的词语,您可能需要添加-w选项以仅匹配整个单词而不是单词的部分内容。

grep -wf grep-pattern.txt inputfile

答案 1 :(得分:1)

$ grep -E "aijdish|d|buh" inputfile
aijdish uhuih
buh iiu hhuih
d uhiuhg ui

答案 2 :(得分:0)

将要搜索的单词存储在文件中(例如a.txt),然后编写一个脚本,用于搜索a.txt中的每一行并在所需文件中将其匹配