對不起,但我從來沒有問過這樣的板子上的問題,請原諒經驗不足。Awk與輸入文件匹配和模式搜索
我想從輸入文件中取一個字段,比如abc.txt中的兩個字段,並在def.txt中匹配它。問題是我還需要在def.txt文件中匹配一個額外的模式。
對於exapmle,abc.txt中的字段2是「3」。我想在def.txt中搜索的模式是「efg」。我需要它返回所有符合pattern「efg」且包含「3」的行。
作爲一個額外的約束,我希望它在達到某個值後停止搜索,比如說「END」。我已經用盡了精力在awk或其他變體中找到一個簡單的單線程。
我對所有這些問題感到困惑,可以向新手尋求幫助嗎?任何幫助表示讚賞,謝謝。
下面是代碼,這是不工作: awk 'BEGIN { FS = " " } ;NR==FNR{a[$2]=++i;next} '{if ($5 in a) && ($0 ~ '/efg/')} {print $0}' abc.txt def.txt
我想實現三件事情:
匹配輸入文件中的字段來def.txt領域
在def.txt中匹配一個模式
當遇到值時停止搜索以進行考試「完」。
希望一條線解決方案,如果可能的話,我只是太多的AWK初學者。
Sample Input
Abc.txt
1
2
3
4
Def.txt
1 abc
1 efg
1 efg some more data
END
2 ghi
2 efg
2 efg some more data
END
3 jkl
3 efg
3 efg some more data
END
等等...
Expected Output
1 efg
1 efg some more data
2 efg
2 efg some more data
3 efg
3 efg some more data
,並與任何幫助,以使其停止在到達 「END」。而不是瀏覽整個文件並打印1 efg,2 efg等的後續實例。
abc.txt中的「3」與def.txt中的「efg」匹配並在兩個文件中打印行?那兩個文件都是空格分隔的嗎?哪個文件包含「END」? – haifzhan
你想用'/ efg'/'完成什麼?無論如何,發佈一些樣本輸入和期望的輸出。 –
@haifzhan - 我需要的文件來自def.txt文件。我正在尋找def.txt中與abc.txt中的「3」和def.txt中的「efg」匹配的行。 「END」語句也在我需要得到結果的文件中。對於缺乏細節感到抱歉,我正在學習如何有效發佈。 – question33