2013-10-24 99 views
2

Im解析CSV文件,並希望在最後添加2列的md5sum。AWK內的Linux命令

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

要在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" 
+0

太棒了!謝謝:) – arve

+0

對不起還有一個問題。我如何從$ 5 $ 7中刪除所有空格? – arve