从文件列表中编译单词列表

从文件列表中编译单词列表

人们将如何承担这项任务?

我尝试用 tr 来做到这一点,并提出了这个(在其他类似问题的帮助下):

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

但是..有点问题。:alnum:只是字符和数字的列表。阅读后我尝试减轻这种情况man

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

应该将带有破折号的单词包含到要替换的内容列表中,但是不,由于某种原因没有这样做。

承担这项任务的正确方法是什么?

为了清楚起见,它的最终目标是应用sort | uniq -c | sort -nr它,识别项目中最常用的字符串,这样我就可以将它们转换为方便的常量;如果我解决问题的方法完全无意义,并且我应该以其他方式解决它,请提出一些建议。

答案1

您似乎想用换行符替换所有非单词字符(字母数字),然后尝试将其包含-在非单词字符集中。

为此tr(这里,我还包含了'一个有效的单词字符,并且我用来-s删除输出中的连续换行符):

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

[=-=]或者,按照您的意愿使用等价类:

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

答案2

@Kusalandra,感谢您的回答,但这有点不是我想做的。我的目标是在单独的行上打印由 :alnum: set 或 '-' 字符组成的每个单词。

结果序列是创建一个新类,即:

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

做我想做的事。

例子:

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

相关内容