このプラットフォームで既に答えられた同じ質問がありますが、すべての解決策を数時間試しましたが、間違いを見つけることができません。だから、私が間違っていることについてのヒントや助けをいただければ幸いです。
こちら https://unix.stackexchange.com/questions/216511/comparing-the-first-column-of-two-files-and-printing-the-entire-row-of-the-secon そしてここ どのようにして2つのファイルのデータを比較して、共通および一意のデータを識別することができますか? ファイル1の列1に一致するファイル2の行をフィルターで除外したい2つのファイルがあります。私の意見では、同じ質問に対して提案された解決策は機能するはずですが、残念ながら機能しません。ファイルはタブで区切られています。
file_1.txt
Apple
great
see
tree
file_2.txt
Apple 5.21 Noun
around 6.21 Adverb
great 2 Adjective
bee 1 Noun
see 7.43 Verb
tree 3 Noun
出力は次のようになります。
Apple 5.21 Noun
great 2 Adjective
see 7.43 Verb
tree 3 Noun
Comm -12を試しましたが、
awk (e.g awk 'NR==FNR{a[$1];next} ($1 in a)' file_1.txt file_2.txt > output.txt)
これはばかげた質問かもしれないことを知っています。事前に謝罪します。しかし、私はそれを理解することができないようです。
その方法の1つは次のようになります。
awk ' BEGIN { while ((getline <"file2.txt") > 0) {REC[$1]=$0}}
{print REC[$1]}' <file1.txt
開始時のgetlineはfile2.txtを読み取り、それを最初のレコードによってインデックス付けされた配列REC
に保存します。
次に、コードの「メイン」セクションはfile1.txtの内容を読み取り、行の最初のWordを使用して、現在REC
に格納されているfile2.txtから適切な行を検索します。
出力例:
Apple 5.21 Noun
great 2 Adjective
see 7.43 Verb
tree 3 Noun