如何使用awk将2个文件合并为第三个文件?



谁能告诉我我做错了什么?我想合并两个文件,从第一个文件中获取信息并将其放入第二个文件,创建第三个文件。

文件1:

1111-22-33 | 44:55:66 | 7777=8888 | AAAA | BBBB CCCC | DDDD | 11 |

文件2:

1111-22-33 | 44:55:66 | 7777= |   | AAAA | BBBB CCCC

文件3必须像这样:

1111-22-33 | 44:55:66 | 7777=8888 |   | AAAA | BBBB CCCC | DDDD | 11 |
#!/bin/bash
set -e
awk 'NR==FNR{A[$2]=$3; B[$1]=$2;  next} {print $1,B[$1],A[$2],$4,$5,$6 }' FS="|" OFS="|" $1 $2 > $3
echo "done"

谢谢!

编辑:

@Lety这是运行代码后的输出:

1111-22-33 | 44:55:66 | 7777=8888 | AAAA | BBBB CCCC | DDDD | 11 |
1111-22-33 | 44:55:66 | 7777=8888 | AAAA | BBBB CCCC | DDDD | 11 |
1111-22-33 | 44:55:66 | 7777= | | AAAA | BBBB CCCC
1111-22-33 | 44:55:66 | 7777= | | AAAA | BBBB CCCC
1111-22-33 ||| | AAAA | BBBB CCCC

可能,您可能正在寻找这个,以合并两个文件:

awk 'NR==FNR{ for(i=1;i<=NF; i++) a[i]=$i; next }
{ print $1,$2, a[3],$4,$5,$6,a[7] }' FS="|" OFS="|" file1 file2

输出:

1111-22-33 | 44:55:66 | 7777=8888 | | AAAA | BBBB CCCC| 11

但这可能不符合你的期望,因为我只是胡乱猜测会发生什么。