Я новичок в grep и awk, и я хотел бы создать значения, разделенные табуляцией, в выходных данных файла "interval.txt" (этот скрипт просматривает большой корпус, а затем выводит каждое отдельное слово и сколько раз оно используетсяв корпусе - я изменил его для кхмерского языка).Я оглянулся ( grep tab в UNIX ), но я не могу найти пример, который имеет смысл для этого сценария bash (я слишком большой новичок).
Я использую этот сценарий bash в cygwin:
#!/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 и регулярных выражений):
ព្រះ វិញ្ញាណ នឹង ប្រពន្ធ ប្រពន្ធ ថ្មី ពោល ថា អញ្ជើញ មក ហើយអ្នក ណា ដែល ឮ ក៏ ថា មក មក ដែរ ដែល ដែល ដែល នោះ មាន តែ ហើយ អ្នក ណា ដែល ចង់ ចង់ មាន តែ ទឹក ទឹក101 នោះ ចុះ ឥត ចេញ ថ្លៃ output 101
Ниже приведен пример выходных данных для частоты .txt в том виде, как он есть сейчас (частота и термин):
25605 នឹង 25043 ជា 22004 បាន 20515 នោះ
Я хочу, чтобы выходной частота.txt выглядел следующим образом (где TAB - фактический символ табуляции):
25605TABនឹង 25043TAB ជា 22004TAB បាន 20515TAB នោះ
Спасибо за помощь!