テキスト処理:1行の文字列をその文字列に置き換える

テキスト処理:1行の文字列をその文字列に置き換える

私はこれを入力ファイルとして持っています

ファイル1

Red + Yellow = Orange; Yellow + Blue = Green; Blue + Red = Violet

ファイル2

Red;1
Yellow;2
Blue;3

私はこれをUNIX環境でやっています。

出力

ファイル3

1 + 2 = Orange; 2 + 3 = Green; 3 + 1 = Violet

ベストアンサー1

awk 'NR == FNR { # First file
    split($0,a,/;/)
    #print "change " a[1] "to " a[2]
    change[a[1]]=a[2]
}
NR != FNR {
    for (i=1;i<NF;i++) {
            if ($i in change) {
                    $i=change[$i]
            }
    }
    print
}' file2 file1

awkイディオムNR! = FNRを使用して、これが最初のファイルか2番目のファイルであるかを確認してください。最初のファイルの場合は、行を分割して;変更の配列にマップを保存します。 2番目の場合は、入力フィールドを繰り返し、一致するものがある場合は正しい変更に置き換えます。最後に結果を印刷します。

おすすめ記事