[英]Counting Number of Words in a delimited String in Linux
我是Linux新手。
我有一個分隔的字符串,我想找出其中的單詞數量。
line=100|Surender|Linux
echo $line '|' | wc -w
上面的代碼給了我2。 但是預期的數量是3。
有人可以幫我這個嗎?
wc
“單詞”理解為“由空格分隔的字符串”。 在您的示例中,有兩個詞:
1 line=100|Surender|Linux
2 |
要計算“列”,請用空格替換垂直條:
echo "${line//|/ }" | wc -w
這可以在bash
使用,並使用“參數擴展”。 如果它在你的shell中不起作用,你可以達到tr
:
echo "$line" | tr '|' ' ' | wc -w
使用awk
# -F takes delimiter
# NF means no of fields
echo $line | awk -F'|' '{ print NF }'
你可以通過數組來做到這一點:
$ line="foo|bar|blah"
$ IFS="|"; read -ra items <<< "$line"
$ echo ${#items[@]}
3
@narendra表現出來的方式更加方便我的眼睛。
並且,不要忘記,嘗試python方式:
$ python -c "print len('${line}'.split('|'))"
3
逐步建立起來。
wc
期望單詞之間有空格
您可以使用tr
替換“|” 到空間
例如
~/tmp$ line="100|Surender|Linux"
~/tmp$ echo $line |tr "|" " "
100 Surender Linux
很好,所以現在通過管道把它推到wc
~/tmp$ echo $line |tr "|" " " |wc
1 3 19
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.