![cat 命令似乎在每行末尾添加額外的 $ 字符](https://rvso.com/image/89138/cat%20%E5%91%BD%E4%BB%A4%E4%BC%BC%E4%B9%8E%E5%9C%A8%E6%AF%8F%E8%A1%8C%E6%9C%AB%E5%B0%BE%E6%B7%BB%E5%8A%A0%E9%A1%8D%E5%A4%96%E7%9A%84%20%24%20%E5%AD%97%E7%AC%A6.png)
我正在嘗試創建一個文件,看起來編輯器在每行末尾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, 在裡面擴充部分)。但根據原理中的線索,它可以在您可能使用的任何東西上運行。