# saving matches to array and printing array in scalar context
$ perl -ne '@arr = $_ =~ /\//g;print 0+@arr' <<< "/home/usr/bin/test"
4
# building list of only / chars and getting length of that list
$ python -c 'import sys; print(len([char for line in sys.stdin for char in line if char == "/"]))' <<< "/home/usr/bin/test"
4
# iterating over each character of string using substr
$ awk '{for(i=1;i<=length($0);i++) if(substr($0,i,1)=="/") count++}END{print count}' <<< "/home/usr/bin/test"
4
您的命令实际上会计算命令标准输出中包含的行数
/
/home/usr/bin/test
以下是一些用于计算字符串
/
中的实例的选项:/home/usr/bin/test
As
grep -c
计算包含该模式的行数。使用该-o
选项在不同的行上输出匹配的内容。然后,您可以使用-c
来计算这些行。使用
awk
(分别打印每一行):-F"/"
: 视为/
字段分隔符NF-1
:字段数-1。打印所有行:
使用
sed
和grep
:sed "s@/@/\n@g"
在每个之后放置一个新行,/
以便grep
可以计算所有这些。你做错了,因为:
-c
flag 计算匹配行数"/home/usr/bin/test | grep / -c
字面意思是您正在尝试执行/home/usr/bin/test
文件并将其输出通过管道传输到grep
你应该做的是:
计算
grep
with的单个输出使用以下工具
grep
: