我对Linux非常陌生。在Linux中计算分隔字符串中的字数
我有一个分隔字符串,我想找出它的单词数量。
line=100|Surender|Linux
echo $line '|' | wc -w
上面的代码给了我2。但预计的数量是3。
有人能帮助我在此
我对Linux非常陌生。在Linux中计算分隔字符串中的字数
我有一个分隔字符串,我想找出它的单词数量。
line=100|Surender|Linux
echo $line '|' | wc -w
上面的代码给了我2。但预计的数量是3。
有人能帮助我在此
一步一步地建立起来。
wc
预计话
你可以使用tr
来代替 '|'以空间
如
~/tmp$ line="100|Surender|Linux"
~/tmp$ echo $line |tr "|" " "
100 Surender Linux
大,所以现在通过管道推动这wc
~/tmp$ echo $line |tr "|" " " |wc
1 3 19
我试过你的解决方案,它的工作..谢谢! –
wc
理解“字”为“由空格分隔字符的字符串”。在您的例子,有两个词:
1 line=100|Surender|Linux
2 |
为了计数“列”,用空格代替竖线:
echo "${line//|/ }" | wc -w
这将在bash
工作,并使用“参数扩展”。如果它不能在你的外壳,你可以达到tr
:
echo "$line" | tr '|' ' ' | wc -w
感谢让我明白为什么我的代码给出了2 .. –
用AWK
# -F takes delimiter
# NF means no of fields
echo $line | awk -F'|' '{ print NF }'
@Narender谢谢!! –
您可以通过数组做到这一点:
$ line="foo|bar|blah"
$ IFS="|"; read -ra items <<< "$line"
$ echo ${#items[@]}
3
@narendra展示的awk方式更加方便我的眼睛。
而且,不要忘记,尝试蟒蛇方式:
$ python -c "print len('${line}'.split('|'))"
3
你实际上上面你的代码是呼应两个字符串和管道他们WC做些什么。字符串一是“100 | Surender | Linux”,字符串二是'|'。正如你所看到的,wc正确计算。 – ferdy
是的ferdy,只是学习基本的Linux通过做一些处理,感谢您的回复 –