【问题标题】:Linux command within AWKAWK 中的 Linux 命令
【发布时间】:2013-10-24 04:22:42
【问题描述】:

我正在解析一个 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")

【问题讨论】:

    标签: linux bash shell awk


    【解决方案1】:

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

    【讨论】:

    • 抱歉还有一个问题。我如何从 $5$7 中删除所有空格?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 2016-06-28
    • 2019-10-07
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多