根据特定字段打印两个文件的信息

时间:2019-05-02 14:01:53

标签: awk

我有两个文件。当第一个字段存在且相等时,我需要在两个文件中打印示例信息。

file 1
20;"aaaaaa";99292929
24;"fsfdfa";42933294
30;"fsdsff";23832299
38;"fjsdjl";62673777

file 2
13;"fsdffsdfs";2272777
20;"ffuiiii";23728877
30;"wdwfsdh";8882817
40;"sfjslll";82371111

expect result:
file1;20;"aaaaaa";99292929;file2;20;"ffuiiii";23728877
file1,30;"fsdsff";23832299;file2;30;"wdwfsdh";8882817

我尝试过:

awk 'FNR==NR{a[$1]=$1;next} $1 in a' file2 file1 > newfile

逻辑上还可以,但我无法显示我想要的字段。

2 个答案:

答案 0 :(得分:1)

awk将帮助:

awk -F ';' 'NR==FNR{rec[$1]=FILENAME FS $0}
            NR>FNR{
              if($1 in rec){
              print rec[$1] FS FILENAME FS $0
              }
            }' file{1..2}

应该做。

答案 1 :(得分:1)

$ cat tst.awk
BEGIN { FS=OFS=";" }
{ $0 = FILENAME FS $0 }
NR==FNR { a[$2] = $0; next }
$2 in a { print a[$2], $0 }

$ awk -f tst.awk file1 file2
file1;20;"aaaaaa";99292929;file2;20;"ffuiiii";23728877
file1;30;"fsdsff";23832299;file2;30;"wdwfsdh";8882817