我對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通過做一些處理,感謝您的回覆 –