如何从给定的文本文件中仅提取字母数字字符并打印它们?

如何从给定的文本文件中仅提取字母数字字符并打印它们?

我有一个文本文件,看起来像下面粘贴的文本。我想将本质上是字母数字的任何字符提取到文件中,并忽略其他所有字符。

做到这一点最简单的方法是什么(grepcut)?

%[{]$#{!^]^$#+*$}#*)(]!@^&#){][$)}!+%^)@#&!%(+^^($(%}^+[*)#+{%!))}(*&]__})][_))}#
%())#&##{]$#$](&$%&&$)^{(@%)$%()#)&&*{]&^^+%$##%{!(_$(**&(_]+{%[%$!_){$*@@++]&^$(
%@+{+&%]$)+@({$(+{!*#(%)]+[}){]]#)*[]%&{+)$){!&$]+^++_@]#%)[&&^%]#@#@)]@}%$[_*@%)
%[&*^*})@(!{&^#!([%@_![{)+)$}_+)%&^#@#$$}))^&)}({+*&_()&@]$^#(&&{){)_[}{@(}#)!)%&
%({+$[!#()[]%{$_*]*^%&]@{^@{)}}_^}@!^*)_[([{}]{*#{]&}}[$_[}!%%&_{{!$[}&[[@#[&_$()
%*_$+)&}*){${}!]+%[{{!+)+{!&]$!}{_]&)!!^+){&*#{@!##_(^%^$([!+&+($&)##[&[^_{##{(**
%{{)#*%@*[(^(}!%}@*}@+]^_}&&&}&{[$(@[#*+%[&%{$$**]]%(!$+$!]^+[^_(&*{#_^%[[#+{]#_[
%*}]#)!%!_[})^%*@{!{$)*_+$$*}%(&]%^+$@!&{[]}**})}#}[#{%{$#@##(])&)((${^]^[%^&(!_&

答案1

仅适用于 ASCII 字母数字字符:

LC_ALL=C tr -cd '[:alnum:]' <file

对于字母数字字符根据您的区域设置, 只是:

tr -cd '[:alnum:]' <file

或显式定义区域设置:

LC_ALL=en_US.UTF-8 tr -cd '[:alnum:]' <file

(GNU tr 是一个例外,它目前不支持多字节字符)

答案2

我在那里没有看到任何字母数字字符,但这个 sed 命令应该在输入文件所在的sed 's/[^a-zA-Z0-9]//g' /tmp/foobar位置工作。/tmp/foobar

s/a/b/表示用 b 替换 a 的任何实例,[^a-z]表示不是 a 到 z 的任何字符。s/a/b/g意味着全局执行此操作,而不是在每行的第一个实例处停止,而是继续执行此操作。

相关内容