cat 명령은 각 줄 끝에 추가 $ 문자를 추가하는 것 같습니다.

cat 명령은 각 줄 끝에 추가 $ 문자를 추가하는 것 같습니다.

파일을 생성하려고 하는데 편집자가 vi각 줄의 끝에 파일을 추가하는 것 같습니다. $이 문제의 원인이 무엇인지, 이런 일이 발생하지 않도록 방지하는 방법을 모르겠습니다 vi.

vi file.txt
12345
abcde

cat -v -e file.txt
12345$
abcde$

wc file.txt
2 2 12

$나는 마지막에 문자 수에 의존하는 자동화 파일을 깨뜨리는 것을 원하지 않습니다 . 실제로 한 줄에 5자가 있는데 단어 수가 12자로 표시되는 이유는 무엇입니까?

VIM 버전 7.4.629

답변1

@steeldriver의 의견이 정확합니다. cat줄 끝을 표시합니다 $( vi정중하게 요청하면 ":set list"를 사용하세요). 줄당 추가 문자는 개행 문자(각 텍스트 줄 끝에 있는 보이지 않는 문자)입니다.

그냥 계산하고 싶다면인쇄 가능wc텍스트 의 경우 tr옵션을 사용하여 파일을 처리하기 전에 필터링할 수 있습니다 -d. 다음은 자신을 예로 사용하는 스크립트입니다.

#!/bin/sh
cat $0 |wc
cat $0 | tr -d '\r\n\t' | wc
cat $0 | tr -d '[:cntrl:]' |wc

마지막 줄은 사용하기에는 이식성이 부족할 수 있지만(POSIX, 내부에확장하다부분). 그러나 원칙에 대한 단서가 주어지면 사용 가능한 모든 항목에서 실행될 수 있습니다.

관련 정보