리눅스 쉘 wc -c 문자 수 +1

리눅스 쉘 wc -c 문자 수 +1

wc -c 명령을 사용하여 문자 수를 계산했지만 예를 들어 문자 수에 1을 더한 잘못된 숫자가 표시됩니다.

echo "k" | wc -c 

그것은 나에게 2 개의 문자를 제공합니다

그럼 왜 1이 아니지?

답변1

에 대한 도움말 메시지를 살펴보세요 wc. 옵션 -c은 문자 수를 인쇄합니다. 명령 echo에는 기본적으로 개행 문자가 포함됩니다. 개행 문자를 보면 wc이를 다른 문자로 계산하므로 결과에 추가 개수가 추가됩니다. 아래에 표시된 대안 중 하나를 사용하여 이 문제를 해결할 수 있습니다. -w단어 수와 -l줄 수를 계산합니다.

echo "k" | wc -w 
echo "k" | wc -l

wcto 의 출력을 파이프하여 awk개행 문자를 제외한 문자 수를 얻을 수 있습니다.

wc <filename> | awk '{print $3-$1}'

옵션이 없는 기본 출력은 wc개행 문자 수($1 ~ awk), 단어 수 및 문자 수($3 ~ awk)를 이 순서대로 인쇄합니다.

답변2

you를 실행하면 echo "k"명령 echo은 인쇄하도록 요청한 내용("k")에 개행 문자를 추가합니다. -n옵션을 사용하여 이를 비활성화 할 수 있습니다 .

echo -n k | wc -c
1

그걸 보기 위해서보이지 않는od문자가 있는 경우 또는 다음과 같이 스트림을 덤프할 수 있습니다 hd.

echo k | od -t c
0000000   k  \n

echo k | hd
00000000  6b 0a                                             |k.|

echo k | od -t a -A n
   k  nl

답변3

echo문자열에 개행 문자를 추가하는 를 사용하고 있기 때문입니다 . 대신 사용하세요 printf:

$ echo k | wc -c 
       2
$ printf k | wc -c
       1

관련 정보