我是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