awkを使用してcsvファイルにmd5sum値を追加する方法

awkを使用してcsvファイルにmd5sum値を追加する方法

次の形式のcsvファイルがあります。

1,123-456,IND
2,234-567,US
3,345-678,AUS
4,333-444,SA

ループを使用したくないので、以下のような出力形式でAWKコマンドを使用して各行のmd5sum値を生成したいと思います。

1,123-456,IND,<md5 value>
2,234-567,US,<md5 value>
3,345-678,AUS,<md5 value>
4,333-444,SA,<md5 value>

答え1

awkについてはまったく対処せずにシェルを直接使用します。あなたは言う「awkコマンドを使ってみたいです。」だからそんな理由があると思います。

awk -v OFS=',' '{
    cmd = "echo \047" $0 "\047 | md5sum"
    val = ( (cmd | getline line) > 0 ? line : "FAILED")
    close(cmd)
    sub(/ .*/,"",val)
    print $0, val
}' file
1,123-456,IND,df6c21260b315d90fbbb6da2969b721c
2,234-567,US,764fd46b443bb125e48f154f964ee1d7
3,345-678,AUS,3b769d86ef698ca08de9dccabe402f02
4,333-444,SA,345b7e3e29df314844a7625e5b6e3486

上記は、各行にエコーバージョンが中断される可能性のある内容が含まれていないと想定しています。

関連情報