-L
wc
적어도 내 생각에는 유용한 기능이다 . 가장 긴 줄의 길이를 인쇄합니다. 어떤 이유로 단일 바이트 탭 문자를 길이 8로 확장합니다.
탭을 "확장"하지 않도록 설정하는 방법이 있습니까? 이번 확장의 근거는 무엇일까요?
echo -n $'\t' | wc -L
산출 8
wc(GNU coreutils) 7.4
GNU bash, 버전 4.1.5
답변1
이 내용 및 다음 줄과 관련된 버그 보고서를 찾지 못했습니다.소스 파일wc.c
case '\t':
linepos += 8 - (linepos % 8);
이는 파일을 화면에 표시하는 데 필요한 너비를 상기시키기 위해 의도적으로 선택한 것 같습니다.
빠른 대안은 다음과 같습니다.
echo -n $'\t' | tr '\t' ' ' | wc -L
답변2
wc -L이 불분명합니다. 가장 넓은 디스플레이 너비를 반환합니다. 탭 확장을 제어하려면 먼저 필터링하면 됩니다 expand
.
답변3
일반적으로 탭은 다음 위치(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