我正在尝试创建一个文件,看起来编辑器在每行末尾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, 在里面扩展部分)。但根据原理中的线索,它可以在您可能使用的任何东西上运行。