このようなテキストファイルがあります。
word_1 root_of_word_A
word_2 root_of_word_B
word_3 root_of_word_C
word_4 root_of_word_A
その他の類似ファイル
root_of_word_A root_of_word_1
root_of_word_B root_of_word_2
root_of_word_C root_of_word_3
次のように、最初の文書の別の単語を2番目の文書の別の単語に置き換える必要があります。
word_1 root_of_word_1
word_2 root_of_word_2
word_3 root_of_word_3
word_4 root_of_word_1
awkを使うとこんなことができると思います。私はこれを試しました:
awk 'NR==FNR {print $1}{c[$2]++;next};c[$1]>0{print $2}' file1 file2
問題は、file1の最初の列とfile2の2番目の列を印刷する方法がわからないことです。
最初のファイルと2番目のファイルの行数が異なると言われており、私がやりたいことをより明確にするための例があります(問題はAを1に変換するのではなく、root_of_the_word全体を変換することです)。
ベストアンサー1
の単語file2
が一意の場合は、ファイルの順序を逆にして配列を作成してから次のようfile2
に適用できますfile1
。
$ awk 'NR==FNR{a[$1]=$2;next}{print $1,a[$2]}' file2 file1
word_1 root_of_word_1
word_2 root_of_word_2
word_3 root_of_word_3
word_4 root_of_word_1