이 잘라내기 명령에 -d 옵션이 필요한 이유는 무엇입니까?

이 잘라내기 명령에 -d 옵션이 필요한 이유는 무엇입니까?

sales.txt라는 txt 파일이 있습니다.

Fred apples 20 April 4
Susy oranges 5 April 7
Mark watermelons 12 April 10
Terry peaches 7 April 15

이 명령을 사용할 때:

[root@ip-10-0-7-125 bash-tut]# cat sales.txt | cat /dev/stdin | cut -d' ' -f 2,3 | sort
20 April
oranges 5
peaches 7
watermelons 12

요점은 -d' ' 부분을 제거하면 텍스트 파일의 모든 필드를 얻게 된다는 것입니다.

[root@ip-10-0-7-125 bash-tut]# cat sales.txt | cat /dev/stdin | cut -f 2,3 | sort
Mark watermelons 12 April 10
pples 20 April 4
Susy oranges 5 April 7
Terry peaches 7 April 15
[root@ip-10-0-7-125 bash-tut]# man cut

왜 이런 일이 발생합니까? 매뉴얼 페이지에서 d 옵션을 찾아보니 다음과 같이 나와 있습니다. -d는 필드 구분 기호를 의미합니다.

답변1

내 시스템의 매뉴얼 페이지에는 다음과 같이 나와 있습니다.

   -d, --delimiter=DELIM
          use DELIM instead of TAB for field delimiter

따라서 이를 지정하지 않으면 -d필드가 cut문자로 구분된 것으로 간주됩니다. TAB입력 파일에 TAB문자가 포함되어 있지 않습니다. 또한 매뉴얼 페이지에는 다음과 같이 나와 있습니다.

   -f, --fields=LIST
          select only these fields;  also print any line that contains  no
          delimiter character, unless the -s option is specified

핵심 부분은 "구분 기호가 포함되지 않은 모든 줄도 인쇄합니다"입니다. 이것이 당신이 가지고 있는 것입니다: 파일의 모든 줄에는 "구분 기호 없음"이 포함되어 있습니다.

관련 정보