簡體   English   中英

計算Linux中分隔字符串中的字數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM