两个单独的 CSV 文件中有数据,它们共享一个公共 IP 地址。
- 文件 1:
, 4 ,112.175.173.80 ,TCP ,80
- 文件 2:
,112.175.173.80, 0, N/A, unknown, unknown
最终结果看起来像这样:
- 文件 3:
, 4 ,112.175.173.80 ,TCP ,80, 0, N/A, unknown, unknown
到目前为止,我使用sed
并awk
获取了数据,但在这个挑战中已经超出了我的知识范围。
如果您的目标是合并两个文件,那么join
您可能正在寻找的工具。
$ join -t , -1 3 -2 2 "File 1" "File 2"
也就是说:使用“,”作为字段分隔符。对于第一个文件,要比较的字段是第三个文件。对于第二个文件是第二个。第一个文件是“文件 1”,第二个文件是“文件 2”。
$ cat file1
, 4 ,112.175.173.80 ,TCP ,80
$
$ cat file2
,112.175.173.80, 0, N/A, unknown, unknown
$
$ awk -F' *, *' -v OFS=", " 'NR==FNR{a[$2]=$3 OFS $4 OFS $5 OFS $6; next} {print $0, a[$3]}' file2 file1
, 4 ,112.175.173.80 ,TCP ,80, 0, N/A, unknown, unknown
这可能对您有用(GNU sed):
sed -r 's|(,[^,]*)(.*)|/\1/s#$#\2#|' file2 | sed -f - file1 >file3
这会将 file2 转换为 sed 脚本以针对 file1 运行以生成 file3。