2015-05-05 52 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)