如何删除换行符以外的所有非单词字符?

Ror*_*ory 0 perl text text-processing

我有这样一个文件:

my line - some words & text
oh lóok i've got some characters
Run Code Online (Sandbox Code Playgroud)

我想"标准化"它并删除所有非单词字符.我想最终得到这样的东西:

mylinesomewordstext
ohlóokivegotsomecharacters
Run Code Online (Sandbox Code Playgroud)

我现在正在命令行上使用Linux,我希望我可以使用一些单行程.

我试过这个:

cat file | perl -pe 's/\W//'
Run Code Online (Sandbox Code Playgroud)

但是,这删除了所有换行符并将所有内容都排成一行.有没有我可以告诉Perl不包括新行\W?或者还有其他方式吗?

sth*_*sth 7

这将删除不匹配的字符\w\n:

cat file | perl -C -pe 's/[^\w\n]//g'
Run Code Online (Sandbox Code Playgroud)