awkは2つのファイルを比較し、ファイル1の最初のフィールドを印刷します。

awkは2つのファイルを比較し、ファイル1の最初のフィールドを印刷します。

そのようなファイルが2つあります。

ファイル1

1:apple
2:banana
3:pineapple
4:guava
5:orange

そしてファイル2は

apple
guava
orange

ファイル 2 をファイル 1 と比較し、ファイル 2 から欠落している行の最初のフィールドを印刷したいと思います。

希望の出力

3
4

私が試したコードは

ファイル1 <(カット-d:-f2ファイル2)

しかし、私が得た結果は次のとおりです。

1a2,3
> banana
> pineapple

答え1

連想配列照会にAwkを使用するにはどうですか?

awk -F: 'NR==FNR {a[$1]; next} !($2 in a) {print $1}' file2 file1
2
3

答え2

使用grep:

grep -vwf file2 file1 | cut -d: -f1
2
3

関連情報