Составить список слов из списка файлов

Как можно взять на себя эту задачу?

Я попытался сделать это с tr, и придумать это (с помощью другого подобного вопроса):

tr -c '[:alnum:]' '[\n*]' < long_concatenated_file

но .. Это небольшая проблема. :alnum: это только список символов и цифр. Я попытался смягчить это после прочтения man :

tr -c '[:alnum:=-=]' '[\n*]' < long_concatenated_file

который должен был включать слова с тире в них в список заменяемых объектов, но нет, по какой-то причине этого не произошло.

Каков был бы правильный способ взять на себя эту задачу?

Для ясности конечной целью является применение sort | uniq -c | sort -nr sort | uniq -c | sort -nr sort | uniq -c | sort -nr , чтобы определить наиболее часто используемые строки в проекте, чтобы я мог преобразовать их в удобные константы; если мой подход к проблеме совершенно бессмысленный, и я должен подойти к этому как-то иначе, предложите что-нибудь.

Кажется, вы хотите заменить все несловесные символы (буквенно-цифровые символы) на новые строки, а затем попытаетесь включить - в набор несловарных символов.

Чтобы сделать это с помощью tr (здесь я также включил ' в качестве допустимого символа слова и использую -s для удаления последовательных символов новой строки в выводе):

 tr -s -c "[:alnum:]-'" '\n' 

или, используя class эквивалентности [=-=] как вы, кажется, хотите сделать:

 tr -s -c "[:alnum:][=-=]'" '\n' 

@Kusalandra, спасибо за ответ, но это было немного не то, что я хотел сделать. Моя цель состояла в том, чтобы напечатать каждое слово, состоящее из: alnum: set или символа «-» в отдельной строке.

Результирующая последовательность создает новый class, а именно:

cat longfile | tr -c '[[:alnum:]-]' '[\n*]'

делает то, что я хотел сделать.

пример:

$echo aaa-abc asdasd asswdwew | tr -c '[[:alnum:]-]' '[\n*]'
aaa-abc asdasd asswdwew