2011-04-27 94 views
3

我想查找包含保存在不同文件列中的任何字符串的文件的每一行。使用awk輸出的每一行作爲grep模式

我已經試過
grep "$(awk '{ print $1 }' file1.txt)" file2.txt
但只是在其整體輸出FILE2.TXT。

我知道我以前在這個網站上發現了一個模式,但我找不到這個問題了。

+0

的命令做什麼它應該。 我的問題是file1有一個空白行,它將模式「」發送給grep,導致它找到file2中的每一行。 – sans 2011-04-27 19:57:31

回答

6

我在OP的評論中看到,也許問題不再是問題。但是,下面的細微修改將處理空行情況。只需添加一個檢查,以確保該行至少有一個字段:

grep "$(awk '{if (NF > 0) print $1}' file1)" file2 

如果與模式的文件就是一組,每行模式,那麼它的一個更簡單的版本是:

grep -f file1 file2 

這會導致grep使用file1中的行作爲模式。

2

沒有必要使用grep當你在OP具有awk

awk 'FNR==NR&&NF{a[$0];next}($1 in a)' file2 file1