指定されたテキストファイルから英数字のみを抽出して印刷するには?

指定されたテキストファイルから英数字のみを抽出して印刷するには?

下に貼り付けたテキストに似たテキストファイルがあります。本質的に英数字をファイルに抽出し、他のすべての文字を無視したいと思います。

grepこの(、)を実行する最も簡単な方法は何ですかcut

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

答え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/a のすべてのインスタンスを b に置き換えます。[^a-z]つまり、aからzまでではないすべての文字を意味します。s/a/b/gこれは、グローバルにこれを行い、各行の最初のインスタンスで停止するのではなく、この操作を続行することを意味します。

関連情報