2017-02-28 20 views
-2

awkを使ってファイルを編集しようとしていますが、中間ファイルを作成せずにそれを行うことはできません。awkを使用して列(パターン一致)を置き換える方法は?

基本的にfile2とfile3などの列1を使用して検索し、2番目の列を1番目の列の行に一致させるために置き換えます。私は

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 
を持って

(そのFILE2 FILE3とは、他のものが含まれている場合があります)

希望出力

aaa 999 
aaa 888 
bbb 000 
bbb 001 
+0

しばしば、中間ファイルが '<(cat File2.txt File3.txt)'のようなものを使用することを避けることができます。 'awk'は' grep -Ff <(sed 's/\([^] * \)。*/^ \ 1 /' File1.txt)<(cat 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 
関連する問題