我有一个简单的问题需要解决。计算文件中每行的分隔符数。
这是我的示例文件:
4489201,6421,,,
4619802,4276
我想计算每行中有多少逗号。我在读取行脚本时写了这个,但是一直收到错误“没有这样的文件或目录”
#!/bin/bash
data_file="$1"
while read line
do
delimiter_cnt=`sed 's/[^,]//g' $line | wc -c`
echo "delimiter_cnt"
done < $data_file
错误消息是:
sed: can't read 4489201,6421,,,,,,,,,: No such file or directory
0
sed: can't read 4619802,4276,,,,,,,,,: No such file or directory
0
我真的很感谢你的帮助。提前致谢。
答案 0 :(得分:4)
您要求sed
按该名称读取文件。尝试将您的输入发送到sed
的stdin:
delimiter_cnt=`echo $line | sed 's/[^,]//g' | wc -c`
答案 1 :(得分:2)
使用awk:
awk -F, '{print NF-1}' < input_file
按-F,
说awk,使用,
作为字段分隔符,然后为每行打印NF-1
值。 NF
是awk
中当前记录的多个字段。
答案 2 :(得分:1)
我喜欢Michał Šrajer's awk answer。如果你使用bash,你可以直接在shell中执行:
while read line; do
commas=${line//[^,]/}
echo ${#commas}
done < filename