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