2

我正在解析一个 CSV 文件,并希望在最后添加一个 2 列的 md5sum。

eval $(awk -F, -v OFS=", " 'NR==1{print $0,"FILENAME,DATE_LOADED,TEST";next}{ print $0 ", "ENVIRON["FILE"]", "ENVIRON["ISODATE"]", " $5$7 }' $FILE > $NAME"_ready.csv")

我试过这个,但没有成功

eval $(awk -F, -v OFS=", " 'NR==1{print $0,"FILENAME,DATE_LOADED,TEST";next}{ print $0 ", "ENVIRON["FILE"]", "ENVIRON["ISODATE"]", " $(md5 -s $5$7) }' $FILE > $NAME"_ready.csv")
4

1 回答 1

4

要在 awk 中运行命令并捕获其输出,请使用cmd | getline. 以下应该适用于您的情况

awk -F, -v OFS=", " 'NR==1 {
                             print $0,"FILENAME,DATE_LOADED,TEST";
                             next
                           }
                           { 
                             line=$0
                             cmd="md5 -s "$5$7
                             cmd | getline
                             md5sum=$0
                             print line, ENVIRON["FILE"], ENVIRON["ISODATE"], md5sum
                           }' $FILE > $NAME"_ready.csv"
于 2013-10-24T04:51:59.980 回答