我是grep和awk的新手,我想在“frequency.txt”文件输出中创建制表符分隔值(此脚本查看大型语料库,然后输出每个单词以及如何输出很多时候它在语料库中使用 - 我修改它为高棉语)。我环顾了一下(grep a tab in UNIX),但我似乎无法找到一个对我来说这个bash脚本很有意义的例子(我太多了新手)。将标签分隔符添加到Grep
我Cygwin中使用这个bash脚本:
#!/bin/bash
# Create a tally of all the words in the corpus.
#
echo Creating tally of word frequencies...
#
sed -e 's/[a-zA-Z]//g' -e 's// /g' -e 's/\t/ /g' \
-e 's/[«|»|:|;|.|,|(|)|-|?|។|”|“]//g' -e 's/[0-9]//g' \
-e 's/ /\n/g' -e 's/០//g' -e 's/១//g' -e 's/២//g' \
-e 's/៣//g' -e 's/៤//g' -e 's/៥//g' -e 's/៦//g' \
-e 's/៧//g' -e 's/៨//g' -e 's/៩//g' dictionary.txt | \
tr [:upper:] [:lower:] | \
sort | \
uniq -c | \
sort -rn > frequency.txt
grep -Fwf dictionary.txt frequency.txt | awk '{print $2 "," $1}'
awk适合用逗号进行打印,但这只是在屏幕上。如何在频率和词汇之间放置一个制表符(逗号也可以)?
这里是dictionary.txt文件的一小部分(高棉不使用的空间,但在这个语料库有其使用sed和正则表达式转换成空间的每个字之间的不间断空格):
ព្រះវិញ្ញាណនឹងប្រពន្ធថ្មោងថ្មីពោលថា អញ្ជើញមកហើយអ្នកណាដែលឮក៏ថា អញ្ជើញមកដែរអ្នកណាដែលស្រេក នោះមានតែមកហើយអ្នកណា ែលចង់បាន មានតែយកទឹកជីវិតនោះចុះ ឥតចេញថ្លៃទេ。
这里是frequency.txt的输出例子,因为它现在是(频率,然后术语):
25605 25043នឹង22004ជាបាន20515នោះ
我想要的输出frequency.txt看起来像这样(其中TAB是实际制表符):
25605TABនឹង25043TABជា22004TABប ាន15 20515TABនោះ
感谢您的帮助!
这将是更好,如果你提供什么样的语料库文件`dictionary.txt`样子,因为样本我几乎可以肯定你可以用`awk`来替换你的整个脚本。即不会使用`tr,sort,uniq,sed或grep` – SiegeX 2011-02-01 00:33:58
我在原始问题中添加了字典文本文件的示例 - 谢谢! – Nathan 2011-02-01 00:43:42
@Nathan字典文件使用什么编码?它看起来像我的屏幕上的垃圾:请参阅http://i.imgur.com/Ao82s.png – SiegeX 2011-02-01 00:48:21