catコマンドは、各行の末尾に追加の$文字を追加するようです。

catコマンドは、各行の末尾に追加の$文字を追加するようです。

ファイルを作成しようとしていますが、編集者は各行viの末尾にファイルを追加しているようです。$この問題の原因が何であるか、これが発生しないようにする方法がわかりませんvi

vi file.txt
12345
abcde

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

wc file.txt
2 2 12

$私は最後に文字数に依存する自動化ファイルを壊したくありません。実際には1行に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、内部に拡大する部分)。ただし、原則の手がかりが与えられたら、利用可能なすべての項目で実行できます。

関連情報