人们将如何承担这项任务?
我尝试用 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