異なるファイルの一致する別のIDに基づいて、ファイルの2番目の列の値を置き換えます。

異なるファイルの一致する別のIDに基づいて、ファイルの2番目の列の値を置き換えます。

次の 2 つのファイルがあります。 file2 はタブで区切られます。

ファイル1

A 
B
E

ファイル2

ID value
A   1
B   2
C   3
D   4
E   5
F   6
GA  7
HB  10
I   11

file1にIDがある場合は、次のように2番目の列の値を0に変更したいと思います。

ID  value
A   0
B   0
C   3
D   4
E   0
F   6
GA  7
HB  10
I   11

本当に愚かなコードを書いた

for i in `cat file1`;do sed -i 's/\<'"$i"'\>/'"$i"'\t0/g' file2;done

less -S file2 | awk '{print $1,"\t",$2}' | sed 's/ //g' > finalfile

流暢なコードはawkのように置き換えることができますか?ありがとうございます。

ベストアンサー1

すべてのことを一緒にしてくださいawk

awk -v OFS='\t' '
  NR==FNR{ Ids[$1]; next }
         { print $1, ($1 in Ids?0:$2) }
' file1 file2

おすすめ記事