Звучит как домашнее задание.
Выполнение всех ваших требований для cat
, grep
и tr
, соответствие верхнего и нижнего регистра (HE=He=he=hE ), а также слов, оканчивающихся знаками препинания (он.=он=он,=он!):
for word in $(
cat derp.txt | \
tr '[:upper:]' '[:lower:]' | \
tr -d '[:punct:]' | \
tr -d '/r'
)
do
words[$word]=$(cat derp.txt | grep -c $word)
echo "${words[$word]} $word" # lots of duplicate output that's filtered out below.
done | sort -u | tail -n 10
grep.
соответствует всему, так что это опечатка?
tr -d '\r'
не имеет смысла в этом контексте, так как разделитель полей ввода IFS
для цикла for
рассматривает как пробелы, так и символы новой строки как разделители.
Решение Джейсона К. Лая, вероятно, лучшее.