条件に応じて重複レコードを生成する

条件に応じて重複レコードを生成する

条件に応じて重複レコードを生成し、生成される新しい行の列の値を変更する必要があるシェルスクリプトを作成する必要があります。

条件に基づいて重複レコードを作成し、重複行の列を置き換えようとします。

例:

入力は次のとおりです。

列1、列2、列3、列4、列5

1234,abcd,abcd,wxyz,USD
2345,abcd,abcd,wxyz,USD
3456,abcd,abcd,wxyz,EUR

最後の列、つまりcol5がeuroの場合は、列の値の変更に応じて1つ以上の行を作成する必要があります。

出力は

列1、列2、列3、列4、列5

1234,abcd,abcd,wxyz,USD
2345,abcd,abcd,wxyz,USD
3456,abcd,abcd,wxyz,EUR
3456,abcd,abcd,wxyz,AUD

ベストアンサー1

これを行う方法はいくつかあります。

  • アッ

    awk -F, '{print; if($NF=="EUR"){$NF="AUD"; OFS=",";print}}' file
    

    つまり、$NR他のフィールドを確認するには、最後のフィールド()を確認して$NRに変更します$N。ここで、Nは確認したい番号($35番目のフィールドなど)です。

  • 真珠

    perl -pe '$_.= "$1AUD\n" if /(.*)EUR$/' file 
    

    これはPerl速記を多く使用し、説明するのは少し難しいです。次のように同じ内容を作成できます。

    perl -e 'while(<>){if(/(.*)EUR$/){print "$_","$1AUD\n"} else {print "$_"}}' 
    

入力ファイルの各行について

おすすめ記事