wc -c 명령을 사용하여 문자 수를 계산했지만 예를 들어 문자 수에 1을 더한 잘못된 숫자가 표시됩니다.
echo "k" | wc -c
그것은 나에게 2 개의 문자를 제공합니다
그럼 왜 1이 아니지?
답변1
에 대한 도움말 메시지를 살펴보세요 wc
. 옵션 -c
은 문자 수를 인쇄합니다. 명령 echo
에는 기본적으로 개행 문자가 포함됩니다. 개행 문자를 보면 wc
이를 다른 문자로 계산하므로 결과에 추가 개수가 추가됩니다. 아래에 표시된 대안 중 하나를 사용하여 이 문제를 해결할 수 있습니다. -w
단어 수와 -l
줄 수를 계산합니다.
echo "k" | wc -w
echo "k" | wc -l
wc
to 의 출력을 파이프하여 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