如何创建一堆文件中所有单词的列表?

Dom*_*que 3 unix linux awk command-line grep

我正在与一位同事打交道,他在整个 C# 解决方案中出现了大量复制/粘贴的拼写错误。

我不想在每个单独的文件上使用拼写检查器,而是想创建整个解决方案中所有单词的列表,在该列表上启动拼写检查器,并对找到的条目执行完整的“查找和替换”。

为了找到文件中的所有单词,我想过这样做:

grep -wo ".*" blabla.txt
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用:它不是显示每个找到的单词,而是显示找到单词的整行,例如:

this is OK
this is NOK
OK it is
NOK it is
Everything is OK
Run Code Online (Sandbox Code Playgroud)

当我期待类似的事情时:

this
is
OK
this
is
NOK
...
Run Code Online (Sandbox Code Playgroud)

一旦我有了一个文件的列表,我就可以开始处理find ./ -name "*.cs" -exec grep ... {} \; >>output_list并执行一些操作sort output_list | uniq以获得单个单词。

但首先要注意的是:因为grep -ow ".*"它不显示单词,而是显示整行,我该怎么做才能使用 UNIX/Linux 命令行显示文件中的所有单词?(我添加awk为标签,因为这可能是一个解决方案?但我当然不是awk向导:-))

在第一个答案后编辑:
tr确实似乎是要走的路。我可能只是简单地使用tr ' ' '\n',但有一个问题:我尝试了以下方法,但它不起作用:

find ./ -name "*.cs" -exec cat {} | tr ' ' '\n' >>/mnt/c/Temp_Folder\output.txt \;
Run Code Online (Sandbox Code Playgroud)

该命令给了我一个>答案(因为我在某个代码编辑器左右),我仍然做错了什么?

anu*_*ava 6

如何使用tr替换每个空格/制表符来换行:

tr '[[:blank:]]' '\n' <file

this
is
OK
this
is
NOK
OK
it
is
NOK
it
is
Everything
is
OK
Run Code Online (Sandbox Code Playgroud)

根据您编辑的问题,您可以find + tr在 shell 中使用此解决方案bash

while IFS= read -rd '' f; do
   tr ' ' '\n' < "$f"
done < <(find . -name '*.cs' -print0) >/mnt/c/Temp_Folder/output.txt
Run Code Online (Sandbox Code Playgroud)