-1

コマンドを使用して file.txt > file2.txt のレコードの外積を行う場合:

join file1.txt{,} -j999 > file2.txt

次のような file1.txt のすべてのレコードを含む file1.txt の各レコードを取得します。

サンプル データセット

r1
r2
r3

私は得る

r1 r1
r1 r2
r1 r3
r2 r1
r2 r2
r2 r3
r3 r1
r3 r2
r3 r3

r1 r1、r2 r2、レコードなどは必要ありません...

クロス積を実行しているときに可能であれば、期待される結果を得るにはどうすればよいですか? そうでない場合、結合 file1.txt{,} -j 999 の処理後にレコードを削除するにはどうすればよいですか

私は別の awk コマンドでこれを試しました:

if($i!=$(i+12)){print $0;} and

if($1!=$13){print $0;}

各レコードのシリアル番号が 1,2,3,... であるため、次のように file2.txt があります。

c1  c13 --> column 1 and column 13
1   1
1   2
1   3
1   4
2   1
2   2
2   3
2   4
3   1
3   2
3   3
3   4

単純にシリアル番号を比較し、それらが等しくない場合はそれらのレコードを印刷します。しかし、次のような望ましくない結果が得られます。

1  2
1  3
1  4
2  3
2  4
3  4

$1!=$13 より前のすべてのレコードをスキップしていることがわかります。したがって、次のような行がありません。

2  1
3  1
3  2

パターン r1 r1、r2 r2、... にあるレコードのみをスキップする必要があります。

アップデート

画像

1列目と13列目はシリアルナンバーです。

4

1 に答える 1