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의 의견은 정확합니다. ":set list"를 사용하여 친절하게 요청한 것처럼 줄 cat끝을 표시합니다 . 줄당 추가 문자는 줄 바꿈(각 텍스트 줄 끝에 있는 보이지 않는 문자)입니다.$vi

개수만 원하는 경우인쇄 가능텍스트의 경우 로 처리하기 전에 파일을 필터링할 수 있습니다 (예: 옵션 과 함께 wc사용) . 다음은 자신을 예로 간주하는 스크립트입니다.tr-d

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

마지막 줄은 사용하기에는 이식성이 충분하지 않을 수 있습니다(POSIX, 에서펼친부분). 그러나 이론적 근거의 단서를 기반으로 사용 가능성이 있는 모든 항목에서 실행됩니다.

관련 정보