计算Linux中分隔字符串中的单词数

时间:2015-10-14 16:45:31

标签: linux

我是Linux新手。

我有一个分隔的字符串,我想找出其中的字数。

line=100|Surender|Linux

echo $line '|' | wc -w

上面的代码给了我2。但是预期的数量是3。

有人可以帮助我吗

4 个答案:

答案 0 :(得分:1)

wc将“单词”理解为“由空格分隔的字符串”。在您的示例中,有两个词:

1 line=100|Surender|Linux
2 |

为了计算“列”,请用空格替换竖线:

echo "${line//|/ }" | wc -w

这可以在bash中使用,并使用“参数扩展”。如果它在您的shell中不起作用,您可以访问tr

echo "$line" | tr '|' ' ' | wc -w

答案 1 :(得分:1)

使用awk

# -F takes delimiter
# NF means no of fields
echo $line | awk -F'|' '{ print NF }' 

答案 2 :(得分:1)

你可以通过数组来实现:

$ line="foo|bar|blah"
$ IFS="|"; read -ra items <<< "$line"
$ echo ${#items[@]}
3

更加方便我的眼睛是@narendra显示的awk方式。

并且,不要忘记,尝试python方式:

$ python -c "print len('${line}'.split('|'))"
3

答案 3 :(得分:0)

逐步建立起来。

wc期望单词之间有空格

您可以使用tr替换“|”空间

例如

~/tmp$ line="100|Surender|Linux"
~/tmp$ echo $line |tr "|" " "
100 Surender Linux

很好,所以现在通过管道推送到wc

~/tmp$ echo $line |tr "|" " " |wc
      1       3      19