AWK中的Linux命令

我parsing一个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") 

要在awk中运行命令并捕获它的输出,使用cmd | getline 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"