Bash Join命令將分隔符插入第一個元素
我有兩個文件:
文件 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 在第一個命令中添加豎線?
看起來
file1.txt
有 CRLF 行尾。
為什麼要在第一個命令中加入管道?
因為它結合了2個文件,所以添加管道是數據|||| 從
file2.txt
命令說明
-t \|
: 取管 | 作為分隔符,為了便於閱讀,您可以更改-t"|"
-j 1
: 找到第 1 列的公共欄位,你可以刪除它以便於閱讀,因為預設加入也選擇了第 1 列
file1.txt file2.txt
: 從 file1 獲取數據,然後合併到 file2來自命令的值
數據 價值 分隔符**-t** ` 公共欄位**-j 1** 510806153
FILE1(不包括公共欄位和第一個` `) 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/