Bash Join コマンドは、最初の要素に区切り文字を挿入します。

Bash Join コマンドは、最初の要素に区切り文字を挿入します。

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.txtCRLF行末があるようです。

答え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/

関連情報