ファイルを作成しようとしているのですが、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、 の中に延長セクションを参照してください。ただし、根拠の手がかりに基づくと、使用する可能性のあるものであれば何でも実行できます。