Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Awk 根据特定字段打印两个文件的信息_Awk - Fatal编程技术网

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

Awk 根据特定字段打印两个文件的信息,awk,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;2

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

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

逻辑上可以,但我无法显示所需的字段。

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}

应该这样做。

join-t';'file1 file2
在没有任何代码的情况下完美地处理连接(只要文件已排序),但您的输出格式无法单独使用该工具获得,此时您最好使用
awk
执行连接
$ 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