Bash 如何从字符串中删除特殊字符,但在shell脚本中保留下划线
我有一个字符串,类似于“info\u a!\u B?????C_*”。我想删除其中的特殊字符,但保留下划线和字母。我尝试使用[:word:](ASCII字母和u)字符集,但它显示“无效字符集”。你知道怎么处理吗?谢谢Bash 如何从字符串中删除特殊字符,但在shell脚本中保留下划线,bash,shell,Bash,Shell,我有一个字符串,类似于“info\u a!\u B?????C_*”。我想删除其中的特殊字符,但保留下划线和字母。我尝试使用[:word:](ASCII字母和u)字符集,但它显示“无效字符集”。你知道怎么处理吗?谢谢 text="info_!_????????_*" if [ -z `echo $text | tr -dc "[:word:]"` ] ...... 使用bash参数展开: $ var='info_A!__B????????C_*' $ echo "${var//[^[:aln
text="info_!_????????_*"
if [ -z `echo $text | tr -dc "[:word:]"` ]
......
使用
bash
参数展开:
$ var='info_A!__B????????C_*'
$ echo "${var//[^[:alnum:]_]/}"
info_A__BC_
使用
bash
参数展开:
$ var='info_A!__B????????C_*'
$ echo "${var//[^[:alnum:]_]/}"
info_A__BC_
一个
sed
sed 's/[^[:alnum:]_]//g' <<< 'info_!????????*'
一个awk
一个班轮
sed 's/[^[:alnum:]_]//g' <<< 'info_!????????*'
awk '{gsub(/[^[:alnum:]_]/,"",$0)} 1' <<< 'info_!??A_??????*pi9ngo^%$_mingo745'
如果您不希望在输出中包含数字,则将
:alnum:
更改为:alpha:
一个sed
一行将是
sed 's/[^[:alnum:]_]//g' <<< 'info_!????????*'
一个awk
一个班轮
sed 's/[^[:alnum:]_]//g' <<< 'info_!????????*'
awk '{gsub(/[^[:alnum:]_]/,"",$0)} 1' <<< 'info_!??A_??????*pi9ngo^%$_mingo745'
如果您不希望在输出中包含数字,请将
:alnum:
更改为:alpha:
我的tr
不懂[:word:
。我必须这样做:
$ x=$(echo 'info_A!__B????????C_*' | tr -cd '[:alnum:]_')
$ echo $x
info_A__BC_
我的
tr
不懂[:word:
。我必须这样做:
$ x=$(echo 'info_A!__B????????C_*' | tr -cd '[:alnum:]_')
$ echo $x
info_A__BC_
不确定它是否健壮,但它对您的示例文本有效 sed一号班轮:
echo "SamPlE_@tExT%, really ?" | sed -e 's/[^a-z^A-Z|^_]//g'
SamPlE_tExTreally
不确定它是否健壮,但它对您的示例文本有效 sed一号班轮:
echo "SamPlE_@tExT%, really ?" | sed -e 's/[^a-z^A-Z|^_]//g'
SamPlE_tExTreally