"추가 -e"는 무엇을 의미합니까?

"추가 -e"는 무엇을 의미합니까?

coreutils 매뉴얼에서 배웠습니다.join

-e string

입력에서 누락된 출력 필드를 문자열로 바꿉니다. 즉, -12jo 옵션으로 지정된 필드가 누락되었습니다.

나는 이 옵션을 전혀 이해하지 못한다. 다음은 무엇을 의미합니까?

  • "입력에서 출력 필드가 누락되었습니다"

  • "-12jo 옵션으로 지정된 필드가 누락되었습니다"?

감사해요.

답변1

약간 비밀스러운 문자열은 , , 및 -12jo4개의 개별 옵션을 나타냅니다 . 그 중 처음 3개는 각 파일에 포함할 필드를 선택하는 것과 관련이 있고 마지막 은 각 파일의 어떤 필드를 출력해야 하는지 선택하는 것과 관련됩니다. 이 옵션은 GNU의 확장이며 (여기서 정수는 어디에 있는가)와 동일 합니다 .-1-2-j-o-jjoin-j n-1 n -2 nn

이 옵션은 요청 가져오기를 사용할 때 -e적용됩니다 .-a페어링되지 않은참여하는 하나 또는 두 개의 파일에 있는 줄입니다. 한 파일의 행이 다른 파일의 행과 일치하지 않기 때문에 쌍을 이루지 않은 행은 데이터를 잃게 됩니다. 이 -e옵션은 이러한 필드를 지정된 문자열로 바꿉니다. 마찬가지로 -o요청 파일의 특정 줄에 존재하지 않는 필드를 사용하는 경우 -enull 값을 문자열로 대체할 수 있습니다.

예: 두 개의 파일에는 여러 제품의 제조 비용과 판매 수익이 포함되어 있습니다. 각 파일에는 필드가 있습니다.

  1. 제품 번호
  2. 상품명
  3. 일부 숫자
$ cat expenses.txt
1   teacup  5
2   spoon   7
3   bowl    10

$ cat sales.txt
1   teacup  30
2   spoon   24

수수료를 받기 위해그리고모든 제품의 판매, 문자열(첫 번째 또는 두 번째 파일의)에서 누락될 수 있는 숫자를 바꾸는 동안 NONE다음을 수행합니다.

$ join -a1 -a2 -o0,1.2,1.3,2.3 -e NONE expenses.txt sales.txt
1 teacup 5 30
2 spoon 7 24
3 bowl 10 NONE

여기서는 이 -a옵션을 두 번 사용하여 두 파일의 모든 행을 요청합니다(SQL의 "완전 외부 조인"). 이 -o옵션은 각 파일에서 특정 필드를 가져오는 데 사용되며(필드는 0기본적으로 각 파일의 첫 번째 필드인 연결된 필드임) -e누락된 값을 대체하는 데 사용되는 문자열을 지정합니다.NONE

보시다시피 NONEID 3의 제품이 두 번째 파일에 언급되지 않았기 때문에 "Sales Value"를 얻습니다.

관련 정보