
我正在嘗試創建一個文件,看起來編輯器在每行末尾vi
添加了一個。$
我不知道是什麼導致了這種情況,也不知道如何防止vi
這種情況發生。
vi file.txt
12345
abcde
cat -v -e file.txt
12345$
abcde$
wc file.txt
2 2 12
我不要那些$
符號在最後;他們破壞了我的取決於字元數的自動化文件。為什麼字數統計顯示 12 個字符,而實際上每行有 5 個字符?
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, 在裡面擴充部分)。但根據原理中的線索,它可以在您可能使用的任何東西上運行。