- 获得目录参数 DIR=$1
- 处理目录参数,若不是为空,则在最后加一个/(因为后面操作会加上文件名,而空的话代表当前目录,不能加/)。
- 使用 ls 指令打印详细的文件及文件夹信息。
- 通过管道传入 grep ,查找d开头的行数,并传入 wc 统计数目,得出文件夹个数。
- 再使用 ls 指令打印文件及文件夹信息。
- for循环枚举每一个名字,判断是否是可执行文件,统计个数。
- 使用 ls -l 配合 grep 获得所有文件名(过滤掉目录)再用 awk 去掉详细信息。并定义一个字典数组准备统计。
- for循环枚举每一个文件名,取得文件后缀(最后一个点之后的字符,对于类似.gitignore的文件,可能会产生歧义)。
- 判断是否是无后缀文件(去掉后缀后与原文件相同),若无后缀,则累加至无后缀累加器;若有后缀,则在关联数组中将该后缀累加。
- 将关联数组索引按字典序排序,最后输出各后缀文件的数目。
然后使用 ./deal.sh ,分隔出来的单词放在 words.txt 中。对words.txt统计完,形成一个 sum[word] 的数组,再对动词变化和名词变化形式做处理,并且我将转换成原形的日志写到了 changelist.txt 中,其中的格式为"单词原形,单词变形"。
- 使用 wget 获取wikipedia中100篇文章的html文件。我发现维基百科有一个链接,随机跳转到维基中一篇文章。并且文章(人工观测下)不会重复,所以我只需要对这个链接wget一百次,分别保存成文件即可。
- 使用 grep 获取带有标签 <p> 的那些行,由于维基百科的文章html组织较为有序,故这种方式可行。
- 通过 sed 配合正则表达式去掉html标签。
- 再使用 grep 和正则表达式提取出只由a-z组成的单词,并且通过 tr 转成小写。
- 建立关联数组 sum[],枚举每一个单词,在关联数组中进行累加。
- 接下来利用语料本身作为词典库,进行变形单词的处理。
- **(不规则变化)**我从网上搜得不规则动词以及名词的变化表,简单文本处理后存放在 irregular_nouns.txt, irregular_verbs.txt 中,再运行一个shell脚本 irreg.sh ,将其处理成关联数组赋值语句的形式,存放在 ir_n_map.txt, ir_v_map.txt 中。
- 在主脚本中,只需定义关联数组 to[],使用 eval 命令执行上述两个文件,便生成了一个不规则变化形式到原形的映射表。
- 对于 sum[] 中每个单词,判断其映射后的单词是否存在,存在则将其变化形式的个数累加到原形中。
- (规则变化) 依次判断去掉d,去掉ed,去掉ed以及最后一个双写字母,去掉s,去掉es,去掉es以及最后一个双写字母。看去掉后的单词在 sum[] 关联数组中是否存在,存在则将其累加到原形中。
- (备注)每一次将变化形式累加到原形中,都会记录到 changelist.txt 中。
- 将此时的sum数组按照单词出现的频率 sort 排序,并用 sed 取出前1000行。