我想查找包含保存在不同文件列中的任何字符串的文件的每一行。使用awk輸出的每一行作爲grep模式
我已經試過
grep "$(awk '{ print $1 }' file1.txt)" file2.txt
但只是在其整體輸出FILE2.TXT。
我知道我以前在這個網站上發現了一個模式,但我找不到這個問題了。
我想查找包含保存在不同文件列中的任何字符串的文件的每一行。使用awk輸出的每一行作爲grep模式
我已經試過
grep "$(awk '{ print $1 }' file1.txt)" file2.txt
但只是在其整體輸出FILE2.TXT。
我知道我以前在這個網站上發現了一個模式,但我找不到這個問題了。
我在OP的評論中看到,也許問題不再是問題。但是,下面的細微修改將處理空行情況。只需添加一個檢查,以確保該行至少有一個字段:
grep "$(awk '{if (NF > 0) print $1}' file1)" file2
如果與模式的文件就是一組,每行模式,那麼它的一個更簡單的版本是:
grep -f file1 file2
這會導致grep使用file1中的行作爲模式。
沒有必要使用grep
當你在OP具有awk
awk 'FNR==NR&&NF{a[$0];next}($1 in a)' file2 file1
的命令做什麼它應該。 我的問題是file1有一個空白行,它將模式「」發送給grep,導致它找到file2中的每一行。 – sans 2011-04-27 19:57:31