我有一个文本文件,看起来像下面粘贴的文本。我想将本质上是字母数字的任何字符提取到文件中,并忽略其他所有字符。
做到这一点最简单的方法是什么(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
答案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
意味着全局执行此操作,而不是在每行的第一个实例处停止,而是继续执行此操作。