두 개의 파일이 있습니다.
파일 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/