使用regex tr或awk过滤bash脚本中的变量
使用regex tr或awk过滤bash脚本中的变量,regex,bash,shell,awk,regex-negation,Regex,Bash,Shell,Awk,Regex Negation,row1=$('+00:30:07.880000') rowX=$('row1 | tr-dc'0-9') 我基本上想过滤掉所有的特殊字符和空格 我希望得到如下输出 echo$'row1'=003007.880000这是最简单的方法: $ echo '+00 00:30:07.880000' | tr -dc '[0-9].' 00003007880000 问候 不需要正则表达式或外部命令,如tr。Bash的内置参数扩展可以做到这一点: row1='+00 00:30:07.880000' r
row1=$('+00:30:07.880000')
rowX=$('row1 | tr-dc'0-9')
我基本上想过滤掉所有的特殊字符和空格
我希望得到如下输出
echo$'row1'=003007.880000
这是最简单的方法:
$ echo '+00 00:30:07.880000' | tr -dc '[0-9].'
00003007880000
问候 不需要正则表达式或外部命令,如
tr
。Bash的内置参数扩展可以做到这一点:
row1='+00 00:30:07.880000'
row1=${row1//[^0-9.]/}
echo "row1=$row1"
输出row1=00003007.880000
输出有两个前导零,它们不在问题中建议的输出中。可能有一个未声明的要求,删除由空格分隔的前缀。如果是这种情况,可能的代码是:
row1='+00 00:30:07.880000'
row1=${row1##* }
row1=${row1//[^0-9.]/}
echo "row1=$row1"
输出row1=003007.880000
有关
${row1//[^0-9.]/}
和${row1##*}
echo'+00:30:07.880000''tr-dc'0-9.
或echo'+00:30:07.880000'.[sed's/[^0-9.]//code>OP也希望保留句点。我认为OP在变量赋值和命令替换方面都与bash语法有冲突,因此,我建议您也展示一下如何正确使用它们