답변:
소스 파일에서 이와 관련된 버그 보고서가 없으며 다음 줄을 찾습니다. wc.c
case '\t':
linepos += 8 - (linepos % 8);
의도적으로 이런 식으로 동작하도록 선택하는 것 같습니다. 아마도 파일을 화면에 표시하는 데 필요한 너비에 대한 힌트를 줄 것입니다.
빠른 대안은
echo -n $'\t' | tr '\t' ' ' | wc -L
man wc
이 문제에 대해 언급 하지는 않지만 info coreutils 'wc invocation'
( 'man'도 참조)에 언급되어 있습니다 ... 또한 Google sphere를 조금 더 트롤링 한 후에 이것을 대안으로 찾았습니다. echo -n $'\t' | expand -t1 | wc -L
, 이것은 당신의 대안과 거의 동일하지만 좋은 척도를 위해 그것을 던져 넣었습니다. 그리고 다음 링크는 wc hack * 재 컴파일 이지만, 일부는 관심이있을 것입니다 : 다른 탭 너비에 대한 wc 지원
일반적으로 탭은 다음 위치 (8로 나눌 수 있음) +1로 확장 [1, 9, 17, 25, ...]
되므로 요청하면 얻을 수 있습니다.
-n은 질문과 관련이 없지만 $는 아닙니다.
echo foo$'\t' | wc -L
8도 반환합니다.
echo foo$'\t'bar
foo bar
echo에 -e를 사용하면 $를 생략 할 수 있습니다.
echo -e '\t' | wc -L
8
따라서 '\ t'를 단일 바이트로 계산하려면 -e와 $를 생략하십시오.
echo '\t' | wc -L
2
echo '\t'
하지 않습니다 출력 탭 문자 (\ x09). 길이가 2 인 라인을 출력합니다. a '\'
와 't'
. 줄 바꿈은 줄 길이의 일부가 아닙니다 ... ( -n
내 예제 wc
에는 후행 줄 바꿈 문자가없는 파일을 올바르게 처리 할지 여부를 확인하는 예제가 있습니다 ...)
wc --help
말한다 : -L, --max-line-length print the length of the longest line?
. 바이트가 아니라 줄 길이에 대해 이야기합니다.
echo -e foo'\t'bar | wc -L
되어 14가 아닌 11의 결과를 봅니다 .
foo\tbar
예를 들어, wc
한 가정 의 공칭 간격 탭 - 중지 8 ... 방법 다음 예제 쇼 wc
현재 활성화 된 탭 정지 설정을 무시합니다. 8 열 터미널 / 길이의 터미널에 행을 출력하지만 wc
11 tabs -6; echo 12345678; echo -e "foo\tbar"|tee >(wc -L)
wc -L 설명이 모호했습니다. 가장 넓은 디스플레이 너비를 반환합니다. 탭 확장을 제어하기 위해 expand
먼저 필터링 할 수 있습니다 .