использовать
FileReader.readAsArrayBuffer(Blob|File)
, а не
FileReader.readAsDataURL(Blob|File)
так что соблазн здесь заключается в том, чтобы вкладывать циклы ... но вы не хотите этого делать, конечно, не для N> 3 ...
В Python есть две приятные вещи, которые сделают этот довольно простой
.
from collections import Counter
s = open(somefile).read()
# now you have a string with contents of file.
l = s.split()
# now you have a list of words of all lengths
l_filtered = filter(lambda x: len(x)==n, l)
#now you have a filtered list of only words of len n
print (Counter(l_filtered))
#your answer as a dict like Counter object
что-то подобное ниже может сделать то, что вам нужно:
while read line
do
for word in $line
do
[[ ${#word} -eq 3 ]] && echo "$word" $(grep -c "$word" your_file)
done
done < your_file
Он будет читать ваш файл построчно, слово за словом. Если длина слова равна 3, он выведет слово и количество его вхождений в файл
Вы можете использовать это awk
решение, чтобы получить список всех n
буквенных подстрок и их частот:
awk -v n=4 '{
for (i=1; i<=NF; i++)
for (j=1; j<=length($i)-n+1; j++)
w[substr($i, j, n)]++
}
END {
for (i in w) print i, w[i]
}' file
appl 2
ensi 1
nana 1
mang 1
sive 1
anan 1
nsiv 1
grea 1
pens 1
xpen 1
bana 1
ples 2
pple 2
expe 1
reat 1
ango 1
Вы также можете попробовать Perl
perl -lne ' while(/(\S+)/g) { $x=$1;
while($x=~/\b(?=(\w{4}))|\B(?=(\w{4}))\B|(?=(\w{4}))\b/g) { $kv{"$1$2$3"}++ }}
END { print " Вы также можете попробовать Perl
[110] с вашими заданными входами
$ cat test.txt
no apples
no apples
mango is great
banana is expensive
test
$ perl -lne ' while(/(\S+)/g) { $x=$1;
while($x=~/\b(?=(\w{4}))|\B(?=(\w{4}))\B|(?=(\w{4}))\b/g) { $kv{"$1$2$3"}++ }}
END { print " Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
$ perl -lne ' BEGIN { $t=qr(\w{5}) }
while(/(\S+)/g) { $x=$1; while($x=~/\b(?=($t))|\B(?=($t))\B|(?=($t))\b/g)
{ $kv{"$1$2$3"}++ }}
END { print " Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
[112] $kv{ Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
[112]}" for(keys %kv) } ' test.txt
great 1
pples 2
apple 2
expen 1
nsive 1
banan 1
anana 1
ensiv 1
pensi 1
xpens 1
mango 1
$
$kv{ Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
$ perl -lne ' BEGIN { $t=qr(\w{5}) }
while(/(\S+)/g) { $x=$1; while($x=~/\b(?=($t))|\B(?=($t))\B|(?=($t))\b/g)
{ $kv{"$1$2$3"}++ }}
END { print " Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
[112] $kv{ Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
[112]}" for(keys %kv) } ' test.txt
great 1
pples 2
apple 2
expen 1
nsive 1
banan 1
anana 1
ensiv 1
pensi 1
xpens 1
mango 1
$
}" for(keys %kv) } ' test.txt
nsiv 1
xpen 1
reat 1
ensi 1
sive 1
ples 2
pple 2
test 1
appl 2
expe 1
anan 1
mang 1
ango 1
bana 1
pens 1
grea 1
nana 1
$
Вы можете параметризовать внутри блока BEGIN как
$ perl -lne ' BEGIN { $t=qr(\w{5}) }
while(/(\S+)/g) { $x=$1; while($x=~/\b(?=($t))|\B(?=($t))\B|(?=($t))\b/g)
{ $kv{"$1$2$3"}++ }}
END { print " Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
[112] $kv{ Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
[112]}" for(keys %kv) } ' test.txt
great 1
pples 2
apple 2
expen 1
nsive 1
banan 1
anana 1
ensiv 1
pensi 1
xpens 1
mango 1
$
$kv{ Вы также можете попробовать Perl
[110] с вашими заданными входами
$ cat test.txt
no apples
no apples
mango is great
banana is expensive
test
$ perl -lne ' while(/(\S+)/g) { $x=$1;
while($x=~/\b(?=(\w{4}))|\B(?=(\w{4}))\B|(?=(\w{4}))\b/g) { $kv{"$1$2$3"}++ }}
END { print " Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
$ perl -lne ' BEGIN { $t=qr(\w{5}) }
while(/(\S+)/g) { $x=$1; while($x=~/\b(?=($t))|\B(?=($t))\B|(?=($t))\b/g)
{ $kv{"$1$2$3"}++ }}
END { print " Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
[112] $kv{ Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
[112]}" for(keys %kv) } ' test.txt
great 1
pples 2
apple 2
expen 1
nsive 1
banan 1
anana 1
ensiv 1
pensi 1
xpens 1
mango 1
$
$kv{ Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
$ perl -lne ' BEGIN { $t=qr(\w{5}) }
while(/(\S+)/g) { $x=$1; while($x=~/\b(?=($t))|\B(?=($t))\B|(?=($t))\b/g)
{ $kv{"$1$2$3"}++ }}
END { print " Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
[112] $kv{ Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
[112]}" for(keys %kv) } ' test.txt
great 1
pples 2
apple 2
expen 1
nsive 1
banan 1
anana 1
ensiv 1
pensi 1
xpens 1
mango 1
$
}" for(keys %kv) } ' test.txt
nsiv 1
xpen 1
reat 1
ensi 1
sive 1
ples 2
pple 2
test 1
appl 2
expe 1
anan 1
mang 1
ango 1
bana 1
pens 1
grea 1
nana 1
$
Вы можете параметризовать внутри блока BEGIN как
$ perl -lne ' BEGIN { $t=qr(\w{5}) }
while(/(\S+)/g) { $x=$1; while($x=~/\b(?=($t))|\B(?=($t))\B|(?=($t))\b/g)
{ $kv{"$1$2$3"}++ }}
END { print " Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
[112] $kv{ Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
[112]}" for(keys %kv) } ' test.txt
great 1
pples 2
apple 2
expen 1
nsive 1
banan 1
anana 1
ensiv 1
pensi 1
xpens 1
mango 1
$
}" for(keys %kv) } ' file
с вашими заданными входами
$ cat test.txt
no apples
no apples
mango is great
banana is expensive
test
$ perl -lne ' while(/(\S+)/g) { $x=$1;
while($x=~/\b(?=(\w{4}))|\B(?=(\w{4}))\B|(?=(\w{4}))\b/g) { $kv{"$1$2$3"}++ }}
END { print " Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
$ perl -lne ' BEGIN { $t=qr(\w{5}) }
while(/(\S+)/g) { $x=$1; while($x=~/\b(?=($t))|\B(?=($t))\B|(?=($t))\b/g)
{ $kv{"$1$2$3"}++ }}
END { print " Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
[112] $kv{ Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
[112]}" for(keys %kv) } ' test.txt
great 1
pples 2
apple 2
expen 1
nsive 1
banan 1
anana 1
ensiv 1
pensi 1
xpens 1
mango 1
$
$kv{ Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
$ perl -lne ' BEGIN { $t=qr(\w{5}) }
while(/(\S+)/g) { $x=$1; while($x=~/\b(?=($t))|\B(?=($t))\B|(?=($t))\b/g)
{ $kv{"$1$2$3"}++ }}
END { print " Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
[112] $kv{ Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
[112]}" for(keys %kv) } ' test.txt
great 1
pples 2
apple 2
expen 1
nsive 1
banan 1
anana 1
ensiv 1
pensi 1
xpens 1
mango 1
$
}" for(keys %kv) } ' test.txt
nsiv 1
xpen 1
reat 1
ensi 1
sive 1
ples 2
pple 2
test 1
appl 2
expe 1
anan 1
mang 1
ango 1
bana 1
pens 1
grea 1
nana 1
$
Вы можете параметризовать внутри блока BEGIN как
$ perl -lne ' BEGIN { $t=qr(\w{5}) }
while(/(\S+)/g) { $x=$1; while($x=~/\b(?=($t))|\B(?=($t))\B|(?=($t))\b/g)
{ $kv{"$1$2$3"}++ }}
END { print " Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
[112] $kv{ Вы также можете попробовать Perl
[110] с вашими заданными входами
[111] Вы можете параметризовать внутри блока BEGIN как
[112]}" for(keys %kv) } ' test.txt
great 1
pples 2
apple 2
expen 1
nsive 1
banan 1
anana 1
ensiv 1
pensi 1
xpens 1
mango 1
$