Bash Join 명령은 첫 번째 요소에 구분 기호를 삽입합니다.

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이 첫 번째 명령에 수직 막대를 추가하는 이유는 무엇입니까?

답변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/

관련 정보