2015-10-14 68 views
1

我對Linux非常陌生。在Linux中計算分隔字符串中的字數

我有一個分隔字符串,我想找出它的單詞數量。

line=100|Surender|Linux 

echo $line '|' | wc -w 

上面的代碼給了我2。但預計的數量是3。

有人能幫助我在此

+0

你實際上上面你的代碼是呼應兩個字符串和管道他們WC做些什麼。字符串一是「100 | Surender | Linux」,字符串二是'|'。正如你所看到的,wc正確計算。 – ferdy

+1

是的ferdy,只是學習基本的Linux通過做一些處理,感謝您的回覆 –

回答

0

一步一步地建立起來。

wc預計話

之間的空白

你可以使用tr來代替 '|'以空間

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

大,所以現在通過管道推動這wc

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

我試過你的解決方案,它的工作..謝謝! –

1

wc理解「字」爲「由空格分隔字符的字符串」。在您的例子,有兩個詞:

1 line=100|Surender|Linux 
2 | 

爲了計數「列」,用空格代替豎線:

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

這將在bash工作,並使用「參數擴展」。如果它不能在你的外殼,你可以達到tr

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

感謝讓我明白爲什麼我的代碼給出了2 .. –

1

用AWK

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

@Narender謝謝!! –

1

您可以通過數組做到這一點:

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

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

而且,不要忘記,嘗試蟒蛇方式:

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