2つのファイルがあります。
ファイル1.txt:
510806153|1||||33245|65|6236067806|25001|7746250
510806153|1||||33245|65|6968349321|25001|8956584
ファイル2.txt
510806153|||||
これにより、join -t \| -j 1 file1.txt file2.txt
次の結果が表示されます。
|||||6153|1||||33245|65|6236067806|25001|7746250
|||||6153|1||||33245|65|6968349321|25001|8956584
ただし、これによりjoin -t \| -j 1 file2.txt file1.txt
正しい接続が確立されます。
510806153||||||1||||33245|65|6236067806|25001|7746250
510806153||||||1||||33245|65|6968349321|25001|8956584
Joinが最初のコマンドに垂直バーを追加するのはなぜですか?
答え1
file1.txt
CRLF行末があるようです。
答え2
Joinが最初のコマンドにパイプを追加するのはなぜですか?
2つのファイルをマージするのでパイプを追加するのは||||file2.txt
コマンドの説明
-t \|
:パイプ|を区切り文字として使用して、読みやすくするために変更できます。-t"|"
-j 1
:列1で公開フィールドを見つけます。読みやすいように削除できます。参加する列1も選択されました。
file1.txt file2.txt
:file1 からデータをインポートし、file2 にマージします。
コマンドの値
データ | 値 |
---|---|
区切り記号-ティー | | |
共用スペース-j 1 | 510806153 |
FILE1(公開フィールドと最初のフィールドを除く| ) |
1||||33245|65|6236067806|25001|7746250 1||||33245|65|6968349321|25001|8956584 |
FILE2(公開フィールドと最初のフィールドを除く| ) |
|||| |
それでは、データがどのように機能するかを見てみましょう。
1. コマンド =join -t \| -j 1 file1.txt file2.txt
出力= Common Field
+ Delimiter
+ FILE1
+ Delimiter
+FILE2
出力= 510806153
+ |
+ 1||||33245|65|6236067806|25001|7746250...
+ |
+||||
出力=
510806153|1||||33245|65|6236067806|25001|7746250|||||
510806153|1||||33245|65|6968349321|25001|8956584|||||
メモ:コマンド1の出力が間違っているか、StackEchange形式のために発生したようです。
2. コマンド =join -t \| -j 1 file2.txt file1.txt
出力= Common Field
+ Delimiter
+ FILE2
+ Delimiter
+FILE1
出力= 510806153
+ |
+ ||||
+ |
+1||||33245|65|6236067806|25001|7746250...
出力=
510806153||||||1||||33245|65|6236067806|25001|7746250
510806153||||||1||||33245|65|6968349321|25001|8956584
詳細と例については、以下を参照してください。https://www.geeksforgeeks.org/join-command-linux/