0

共通の IP アドレスを共有する 2 つの個別の CSV ファイルにデータがあります。

  • ファイル 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ましたが、このチャレンジで私の知識を超えています。

4

3 に答える 3

1

両方のファイルをマージすることが目標である場合joinは、探しているツールです。

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

つまり、フィールド区切り文字として「,」を使用します。最初のファイルの場合、比較するフィールドは 3 番目のファイルです。2 番目のファイルは 2 番目です。最初のファイルは「ファイル 1」で、2 番目のファイルは「ファイル 2」です。

于 2013-08-21T21:06:56.043 に答える
0

これはうまくいくかもしれません(GNU sed):

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

これにより、file2 が sed スクリプトに変換され、file1 に対して実行されて file3 が生成されます。

于 2013-08-22T00:34:57.930 に答える
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 に答える