0

各ファイルに2つのファイルがあり、列が2つあります.file1の列2の最初の値と、file2の列2の各値を一致させる必要があります。その後、2つのファイルの列1を1つのファイルに結合する必要がありますが、2つの値が一致しない場合、2つの列は互いに隣接している必要があります。

ファイル1

344  0
465  1
729  2
777  3
676  4
862  5

ファイル2

766  0
937  1
980  2
237  3
736  5

422
208
251
4

3 に答える 3

1

@glenn jackmanの答えを少し拡張するには...おそらくこれ:

join -j 2 file1 file2 | awk '{if ($3>$2) print $3-$2; else print $2-$3}'

列 2 に一致がある場合、2 つの列 1 の絶対差が出力されます。しかし、それはあなたの予想される出力と一致しません。これは、最初の値を除いて、質問に一致するように見える方法で入力と明確な関係を持っていないようです...

于 2013-07-05T21:01:43.857 に答える
1

これが役立つかもしれません:

awk '
BEGIN { printf "%s\t%s\t%s\n","File1","File2","Difference(f2-f1)" }
NR==FNR { a[$2]=$1; next }
{ printf "%d\t%d\t%d\n",a[$2],$1,$1-a[$2] }' file1 file2

出力:

File1   File2   Difference(f2-f1)
344     766      422
465     937      472
729     980      251
777     237     -540
862     736     -126
于 2013-07-05T21:53:11.533 に答える