我有两个文件:
文件 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来自命令的值
|
510806153
|
)1||||33245|65|6236067806|25001|7746250
1||||33245|65|6968349321|25001|8956584
|
)||||
现在让我们看看数据是如何工作的
1. 命令 =
join -t \| -j 1 file1.txt file2.txt
输出=
Common Field
+Delimiter
+FILE1
+Delimiter
+FILE2
输出=
510806153
+|
+1||||33245|65|6236067806|25001|7746250...
+|
+||||
输出=
注意:看起来你的输出命令 1 是错误的,或者是因为 StackEchange 格式
2. 命令 =
join -t \| -j 1 file2.txt file1.txt
输出=
Common Field
+Delimiter
+FILE2
+Delimiter
+FILE1
输出=
510806153
+|
+||||
+|
+1||||33245|65|6236067806|25001|7746250...
输出=
有关更多详细信息和示例:https ://www.geeksforgeeks.org/join-command-linux/