2017-09-13 111 views
0

要查找一個文件中的字符串和打印輸出的第一列,我們可以用awk來匹配從文件模式到另一個文件

grep "foo" file.txt | awk '{print $1}'可使用awk單獨

awk '/foo/ {print $1}' file.txthttps://stackoverflow.com/a/22866418/1662898完成)。

而不是單個字符串(foo)作爲模式,我想搜索文件中的字符串列表。使用grep,這將是

grep -Ff file.txt file2.txt | awk '{print $1}' > outFile.txt 

我可以做單獨使用awk一樣嗎?

file.txt 
abcd 
acde 
a2rt 

file2.txt 
1 albcd dhakd kdf 
3 abcdbd and 
2a bda2rt tert 

outFile.txt 
3 
2a 

謝謝! 阿布舍克巴克

+0

要從file.txt和file2.txt中比較哪些列請在信息中清楚,以便我們可以嘗試幫助您。 – RavinderSingh13

+0

file.txt包含一個字符串(模式)每行和file2.txt中的任何位置(沒有特定的列。 – Abhishek

回答

2

等效awk命令將是這一個:

awk 'NR==FNR{a[$1]; next} {for (i in a) if (index($0, i)) print $1}' file.txt file1.txt 

輸出:

3 
2a 

使用非正則表達式的字符串比較(index($0, i))而不是一個正則表達式匹配($0 ~ i)由於-F選項的grep

+2

謝謝!我接受了您的答案。 – Abhishek

相關問題