【问题标题】:AWK comparing two files and printing individual columnsAWK 比较两个文件并打印单个列
【发布时间】:2020-12-13 15:13:12
【问题描述】:

在使用 awk 脚本比较两个文件时我需要帮助。将 file1.csv 的第二列与 file2.csv 的第一列进行比较,如果匹配,则以以下预期格式打印该行。

file1.csv

abc,id123,newyork
bcd,id456,seattle

file2.csv

id678,bbb,ccc
id123,hhh,ddd

期望格式:

abc,id123,hhh,newyork,{hhh,ddd},ddd

到目前为止,我最多可以打印以下内容

abc,id123,newyork,hhh,ddd

使用下面的 awk,

$ awk -F, 'FNR==NR{f1[$2]=$0; next} $1 in f1 {print f1[$1] "," $2 "," $3}' file1.csv file2.csv

【问题讨论】:

    标签: awk


    【解决方案1】:

    你很亲密。试试:

    $ awk -F, 'FNR==NR{f1[$2]=$1; f3[$2]=$3; next} $1 in f1 {printf "%s,%s,%s,%s,{%s,%s},%s\n",f1[$1],$1,$2,f3[$1],$2,$3,$3}' file1.csv file2.csv
    abc,id123,hhh,newyork,{hhh,ddd},ddd
    

    这里的主要补充是使用第二个数组f3 来捕获输入,并使用printf 来获得完全格式化的输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-30
      • 2020-10-05
      • 1970-01-01
      • 1970-01-01
      • 2020-04-16
      • 1970-01-01
      相关资源
      最近更新 更多