两个单独的CSV文件中有数据共享一个公共IP地址。
, 4 ,112.175.173.80 ,TCP ,80
,112.175.173.80, 0, N/A, unknown, unknown
最终结果如下:
, 4 ,112.175.173.80 ,TCP ,80, 0, N/A, unknown, unknown
我使用sed
和awk
来获取这些数据,但是我已经超出了我对这一挑战的了解。
答案 0 :(得分:1)
如果你的目标是合并两个文件,那么join
就是你可能正在寻找的工具。
$ join -t , -1 3 -2 2 "File 1" "File 2"
那说:使用','作为字段分隔符。对于第一个文件,要比较的字段是第三个。第二个文件是第二个。第一个文件是“文件1”,第二个文件是“文件2”。
答案 1 :(得分: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
答案 2 :(得分:0)
这可能适合你(GNU sed):
sed -r 's|(,[^,]*)(.*)|/\1/s#$#\2#|' file2 | sed -f - file1 >file3
这会将file2转换为sed脚本,以针对file1运行以生成file3。