0

两个单独的 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

到目前为止,我使用sedawk获取了数据,但在这个挑战中已经超出了我的知识范围。

4

3 回答 3

1

如果您的目标是合并两个文件,那么join您可能正在寻找的工具。

$ join -t , -1 3 -2 2 "File 1" "File 2"

也就是说:使用“,”作为字段分隔符。对于第一个文件,要比较的字段是第三个文件。对于第二个文件是第二个。第一个文件是“文件 1”,第二个文件是“文件 2”。

于 2013-08-21T21:06:56.043 回答
0
$ 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
于 2013-08-21T21:14:57.217 回答
0

这可能对您有用(GNU sed):

sed -r 's|(,[^,]*)(.*)|/\1/s#$#\2#|' file2 | sed -f - file1 >file3

这会将 file2 转换为 sed 脚本以针对 file1 运行以生成 file3。

于 2013-08-22T00:34:57.930 回答