cat 命令似乎在每行末尾添加額外的 $ 字符

cat 命令似乎在每行末尾添加額外的 $ 字符

我正在嘗試創建一個文件,看起來編輯器在每行末尾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, 在裡面擴充部分)。但根據原理中的線索,它可以在您可能使用的任何東西上運行。

相關內容