【发布时间】:2016-10-20 00:26:28
【问题描述】:
我想要一个循环,它可以找到以多种语言最频繁地结束单词的字母,并以列的形式输出数据。 到目前为止我有
count="./wordlist/french/fr.txt ./wordlist/spanish/es.txt ./wordlist/german/de.$
lang="French Spanish German Portuguese Italian"
(
echo -e "Language Letter Count"
for i in $count
do
(for j in {a..z}
do
echo -e "LANG" $j $(grep -c $j\> $i)
done
) | sort -k3 -rn | head -1
done
) | column -t
我希望它如图所示输出:
Language Letter Count
French e 196195
Spanish a 357193
German e 251892
Portuguese a 217178
Italian a 216125
相反,我得到:
Language Letter Count
LANG z 0
LANG z 0
LANG z 0
LANG z 0
LANG z 0
单词文件具有以下格式:
Word Freq(#),其中单词及其频率由空格分隔。
这意味着我有 2 个问题;
首先,grep 命令没有处理参数$j\> 来查找单词末尾的字符。我尝试过使用grep -E $j\> 和grep '$j\>',但都没有成功。
第二个问题是我不知道如何输出语言的名称(在变量lang中)。当我这样尝试(或 i 和 k 以相反的顺序)时,嵌套另一个 for 循环不起作用:
(
for i in $count
do
for k in $lang
do
for j in {a..z}
do
echo -e $k $j $(grep -c $j\> $i)
done
) | sort -k3 -rn | head -1
done
done
) | column -t
因为这会在不属于它的地方输出语言名称“$k”的倍数。
我知道我可以为每种语言复制和粘贴循环,但我想将它扩展到每种语言。 提前致谢!
【问题讨论】:
-
你能从两个单词列表文件中粘贴几行来测试吗?
-
即使这样,它不会输出错误的数字吗?例如如果您的字数统计文件包含三个条目:
is 1000; xertz 1; showbiz 1;,则结果将是z 2(而不是s 1000) -
是的,变音符号,它会
z 2这是我想要的,因为我想计算频率并显示文件本身中最常结束单词的字符。而且,roelofs,此处显示了该文件的示例:de 1622928 je 1622619 est 1348809 pas 1128894 le 1093232因此,在该文件本身中,e 最常以单词结尾。很抱歉造成误解。