2015-05-05 90 views
0

我想製作腳本,查找我選擇的文件中有多少個單詞。計算文件中的指定字數

這裏是我的腳本:

#!/bin/bash 
echo "Iveskite reiksme kurios kurios kurios ieskosime faile" 
read reiksme 
echo "Nurodykite faila kuriame ieskosime reiksmes" 
read failas 
kiek=$(awk '/$reiksme/' $failas | wc -l) 
echo $kiek > kiek.txt 

如果$ failas包含線,如:

$reiksme 
$reiksme 
$reiksme 

那麼它是好的,但如果$failas包含線,如:

$reiksme $reiksme 
random word $reiksme $reiksme 
random random $reiksme 

然後我腳本無法統計多少個單詞。

回答

1

awk只在線上分裂。你能做到這一點的只有幾步之遙,但很可能有比這更簡單的方法:

kiek=$(sed -e 's/\s/\n/g' $failas | grep "\b${reiksme}\b" | wc -l) 

與換行符替換所有空格,然後使用grep(或您的awk,如果你喜歡)找到你在做什麼尋找然後數他們

+0

這工作得很好,謝謝埃裏克! – semkius

0

我找到了答案在我自己的。我只是改變

kiek=$(awk '/$reiksme/' $failas | wc -l) 

kiek=$(tr -cs 'A-Za-z' '\n' < $failas | grep -c "$reiksme") 
0

grep做到這一點,最好的辦法是在this post描述使用-o選項。把它放在一起給你:

kiek=$(grep -o "${reiksme}" | wc -l)