2017-02-28 36 views
-2

我想使用awk來編輯文件,但我不能設法做到這一點,而無需創建中間文件。如何使用awk替換列(匹配模式)?

Basicaly我想使用file2和file3等第1列進行搜索,並替換第2列以匹配第1列行。 (請注意,文件2和文件3可能含有其他的東西)

FILE1.TXT

aaa 111 
aaa 222 
bbb 333 
bbb 444 

FILE2.TXT

zzz zzz 
aaa 999 
zzz zzz 
aaa 888 

File3.txt

bbb 000 
bbb 001 
yyy yyy 
yyy yyy 

所需輸出

aaa 999 
aaa 888 
bbb 000 
bbb 001 
+0

通常情況下,您可以使用'<(cat File2.txt File3.txt)''來避免中間文件。 'awk'在這裏更好,然後像'grep -Ff <(sed's/\([^] * \)。*/^ \ 1 /'File1.txt)<(File File2.txt File3。 txt)'(只是爲了顯示如何避免中間文件)。 –

回答

2

這就是你指定的,但我想有很多邊緣案例沒有涉及。

$ awk 'NR==FNR{a[$1]; next} $1 in a' file{1..3} 

aaa 999 
aaa 888 
bbb 000 
bbb 001