문자열의 공백 문자 수를 얻으시겠습니까?

문자열의 공백 문자 수를 얻으시겠습니까?

\t파일의 첫 번째 줄에 공백(' ', )이 몇 개 있는지 확인하는 방법은 무엇입니까 ?

답변1

간단한 방법은 첫 번째 줄만 선택하고 공백이 아닌 문자를 제거한 다음 남은 문자 수를 계산하는 것입니다.

head -n 1 | tr -cd ' \t' | wc -c

답변2

awk '{print gsub("[ \t]",""); exit}' < file

또는 공백과 탭뿐만 아니라 모든 공백(가로 간격 문자)을 계산합니다.

awk '{print gsub("[[:blank:]]",""); exit}' < file

답변3

GNU sed를 사용하여 조합을 바꿀 수 있습니다 head|tr(이는 POSIXLY_CORRECT가 환경에 없다고 가정합니다).

sed '1s/[^ \t]//g' |wc -c

노트:sed는 항상 개행 문자를 인쇄하므로개행 자체의 수를 포함합니다. 어떻게 작동하나요?s///: sed에서는 명령에 주소 범위를 지정할 수 있습니다 . 여기서는 첫 번째 줄에 불과합니다. 공백이 아닌 모든 공백을 nul로 전역적으로 대체하고 wc문자 수 계산 결과를 인쇄합니다.

계산을 수행하는 순수한 sed 버전을 찾는 것이 가능하지만 보기 흉합니다.

Perl 버전도 간단합니다.

perl -lne 's/[^ \t]//g;print length($_);last'

원리는 동일합니다. 이 -l옵션은 후행 줄 바꿈을 출력합니다. 이 -n옵션은 거대한 while-readline 루프로 스크립트를 래핑합니다. 그리고 last사이클을 종료합니다.

Stéphane의 awk솔루션은 Perl을 사용하여 이 작업을 수행할 수도 있음을 상기시켜줍니다.

perl -lne 'print s/[[:space:]]]//g;last'

[[:blank:]]또는 줄 바꿈 및 기타 인쇄할 수 없는 문자 로 바꾸십시오 .

답변4

perl -nE '$n = tr/ / /; say $n; exit' file

관련 정보