通过正则表达式分隔符分割文件行

通过正则表达式分隔符分割文件行

我想用非字母数字正则表达式分割输入文件中的每一行\W,并打印输出文件中的所有分割块,如下所示:

输入文件:

www.wifi.in.ua
YI-HondBrychka

输出文件:

www
wifi
in
ua
YI
HondBrynchka

答案1

尝试使用该-o标志,仅打印匹配的字符串,例如

$ cat <<HEREDOC | grep -Po '\w+'
www.wifi.in.ua
YI-HondBrychka
HEREDOC

www
wifi
in
ua
YI
HondBrychka

答案2

\W使用 Perl(表达式源自该语言)将所有匹配项替换为换行符\W

$ perl -pe '$_ =~ s/\W/\n/g' <file
www
wifi
in
ua
YI
HondBrychka

或者,更符合问题的实际措辞:

$ perl -pe '$_ = join("\n", split(/\W/)) . "\n"' <file
www
wifi
in
ua
YI
HondBrychka

将 PCRE 表达\W为 ERE[^[:alnum:]]并使用 GNU awk

awk -v RS='[^[:alnum:]]' 1 file

The1是 的缩写'{ print }',它将输入记录分隔符设置为任何\W字符。然后将记录打印在单独的行上。

或者使用 GNU sed

sed 's/[^[:alnum:]]/\n/g' file

有了tr,就变成了

$ tr -c '[:alnum:]' '\n' <file
www
wifi
in
ua
YI
HondBrychka

where-c让它替换每个字符不是带有[:alnum:]换行符的 .

相关内容