我想hard tab characters
在 unix shell 中计算我的文档中的数量。
我该怎么做?
我尝试了类似的东西
grep -c \t foo
但它给出了文件 foo 中 t 的计数。
使用 tr 丢弃除制表符以外的所有内容,然后计数:
< input-file tr -dc \\t | wc -c
Bash 使用$'...'
符号来指定特殊字符:
grep -c $'\t' foo
使用 perl 正则表达式(-P
选项)来 grep 制表符。
因此,要计算文件中制表符的数量:
grep -o -P '\t' foo | wc -l
Ctrl+V您可以使用+在引号之间插入文字 TAB 字符TAB。
一般来说,您可以通过添加前缀来插入任何字符Ctrl+V;甚至控制字符,例如Enter或Ctrl+Cshell 会以其他方式解释的字符。
你可以用一个棘手的方式来使用 awk:使用制表符作为记录分隔符,那么制表符的个数就是记录总数减 1:
ntabs=$(awk 'BEGIN {RS="\t"} END {print NR-1}' foo)
我的第一个想法是用来sed
去掉所有非制表符,然后wc
用来计算剩下的字符数。
< foo.txt sed 's/[^\t]//g' | wc -c
但是,这也计算换行符,sed
因为它是基于行的,所以不会触及。因此,让我们使用tr
将所有换行符转换为空格,因此它是sed
.
< foo.txt tr '\n' ' ' | sed 's/[^\t]//g' | wc -c
根据您的 shell 和 的实现sed
,您可能必须使用文字制表符而不是\t
,但是,对于 Bash 和 GNU sed
,上述方法有效。