"wc -m"은 한 문자를 너무 많이 표시합니다.

"wc -m"은 한 문자를 너무 많이 표시합니다.

wc -mwc -c나는 /를 사용하여 문자열의 문자 수를 세는 프로그램을 작성하고 있습니다 . 문자 수를 세지만 추가 문자를 추가합니다. 이것이 내가 현재 가지고 있는 것입니다:

echo "enter a word"
read var1
echo $var1 | wc -c

단어를 입력하면 성공적으로 수행되지만 예를 들어 "test"를 입력하면 5가 출력됩니다.

왜 이런 일을 하는가? 해결책이 있나요?

답변1

이는 문자열을 wc. 이 echo명령은 문자열 끝에 추가 문자인 test개행 문자를 삽입합니다 \n.

그래서 실제로 당신은 이것을 계산하고 있습니다: test\n. -n전환하여 이 동작을 비활성화 할 수 있습니다 echo.

$ echo -n "test" | wc -c
4

또는 다른 명령을 사용하여 문자열을 생성합니다. 예 printf:

$ printf "%s" "test" | wc -c
4

무슨 일이 일어났는지 봐

이를 사용하여 od다음과 같이 파이프에 전달된 실제 문자를 확인할 수 있습니다.

$ echo "test" | od -c
0000000   t   e   s   t  \n
0000005

$ echo -n "test" | od -c
0000000   t   e   s   t
0000004

관련 정보