这是我的字符串的样子:
value="inst1,inst2,inst3"
这是我的shell命令的样子,它将计算以逗号分隔的单词数。
echo "$value" | tr ',' ' ' | wc -w
3
只要值中没有空格,此方法就可以正常工作。如果我在值中的一个单词上添加空格,则计数会发生变化。
value="inst1,inst2,inst 3"
echo "$value" | tr ',' ' ' | wc -w
4
如何获取输出3
并忽略字符串中的任何空格?
答案 0 :(得分:4)
您可以使用以下单个awk
命令,该命令使用逗号分隔字段:
value="inst1,inst2,inst 3"
awk -F, '{print NF}' <<< "$value"
3
还有一种使用grep
的替代解决方案:
grep -oE '[^,]+' <<< "$value" | wc -l
答案 1 :(得分:4)
将单词存储在数组中并输出元素数:
IFS=, read -ra arr <<< "$value"; echo "${#arr[@]}"
答案 2 :(得分:2)
首先用其他方式替换空间,然后再执行您的操作。像这样:
echo "$value" | tr ' ' '_' | tr ',' ' ' | wc -w
答案 3 :(得分:2)
您可以使用sed 's/ //g'
删除字符串中的任何空格。因此,完整的命令应为:
echo "$value" | sed 's/ //g' | tr ',' ' ' | wc -w
答案 4 :(得分:1)
使用bash
在值的末尾添加逗号,删除每个非逗号并获得长度。
cnt="${value//[^,]/},";echo "${#cnt}"