\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