我有一个文本文件,看起来像下面粘贴的文本。我想将本质上是字母数字的任何字符提取到文件中,并忽略其他所有字符。
做到这一点最简单的方法是什么(grep,cut)?
%[{]$#{!^]^$#+*$}#*)(]!@^&#){][$)}!+%^)@#&!%(+^^($(%}^+[*)#+{%!))}(*&]__})][_))}#
%())#&##{]$#$](&$%&&$)^{(@%)$%()#)&&*{]&^^+%$##%{!(_$(**&(_]+{%[%$!_){$*@@++]&^$(
%@+{+&%]$)+@({$(+{!*#(%)]+[}){]]#)*[]%&{+)$){!&$]+^++_@]#%)[&&^%]#@#@)]@}%$[_*@%)
%[&*^*})@(!{&^#!([%@_![{)+)$}_+)%&^#@#$$}))^&)}({+*&_()&@]$^#(&&{){)_[}{@(}#)!)%&
%({+$[!#()[]%{$_*]*^%&]@{^@{)}}_^}@!^*)_[([{}]{*#{]&}}[$_[}!%%&_{{!$[}&[[@#[&_$()
%*_$+)&}*){${}!]+%[{{!+)+{!&]$!}{_]&)!!^+){&*#{@!##_(^%^$([!+&+($&)##[&[^_{##{(**
%{{)#*%@*[(^(}!%}@*}@+]^_}&&&}&{[$(@[#*+%[&%{$$**]]%(!$+$!]^+[^_(&*{#_^%[[#+{]#_[
%*}]#)!%!_[})^%*@{!{$)*_+$$*}%(&]%^+$@!&{[]}**})}#}[#{%{$#@##(])&)((${^]^[%^&(!_&
Run Code Online (Sandbox Code Playgroud)
仅适用于 ASCII 字母数字字符:
LC_ALL=C tr -cd '[:alnum:]' <file
Run Code Online (Sandbox Code Playgroud)
对于根据您的区域设置的字母数字字符,只需:
tr -cd '[:alnum:]' <file
Run Code Online (Sandbox Code Playgroud)
或显式定义区域设置:
LC_ALL=en_US.UTF-8 tr -cd '[:alnum:]' <file
Run Code Online (Sandbox Code Playgroud)
我在那里没有看到任何字母数字字符,但这个 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意味着全局执行此操作,而不是在每行的第一个实例处停止,而是继续执行此操作。