シェルスクリプト - CSVファイルの行を読み取り、セルに複数の値の接頭辞を付けます。

シェルスクリプト - CSVファイルの行を読み取り、セルに複数の値の接頭辞を付けます。

このようなcsvファイルがあります。

aaa|c1|bbb|t1
bbb|c1,c2|nnn|t1,t2

パイプはセパレータです。列2と列4を含む文字列を生成したいと思います。そして、2つの列値にプレフィックスを追加する必要があります。

列 2 =aプレフィックスです。列 4 =bプレフィックスです。

予想出力:

this is final string a.c1=b.t1
this is final string a.c1,a.c2=-b.t1,b,t2

私のサンプルスクリプト(完了):

while read r_line
do
c2 = $(echo $r_line|awk -F'|' '{print $2}')
c4 = $(echo $r_file |awk -F'|' '{print $4}')
out=$("this is final string a.$c2=b.$c4")
done < csv file

ここで、c2 または t2 にコンマ区切りの値がある場合、これらの 2 つの値にプレフィックスを適用する必要があります。

ベストアンサー1

bashcsvファイルを配列に読み込み、最初にパラメータ置換を実行して2番目の4番目のフィールドを出力します。

while IFS='|' read -ra a;do
  echo This is the final string: \
    "a.${a[1]//,/,a.}=b.${a[3]//,/,b.}"
done < csvfile

おすすめ記事