利用awk命令提取字符串中的所有数字

利用awk命令提取字符串中的所有数字

用awk命令提取一串字符中的数字,此方法只适用于第一个字符不是数字的:

$ echo a1c2d3d1456e78f9 | awk '
{
string=$0
len=length(string)
for(i=0; i<=len; i++)
{
tmp=substr(string,i,1)
if(tmp ~ /[0-9]/)
{
str=tmp
str1=(str1 str)
}
}
print str1
}'

输出
1231456789

 


以上的能够实现其功能,但是如果第一个字符为数字的时候就不会成立了,他会重复打印一次第一个数字(即会输出11231456789),下面给出都是用的方案:

$ echo b1c2d3d1456e78f9 | awk '
{
string=$0
len=length(string)
for(i=0; i<=len; i++)
{
tmp=substr(string,i+1,1)
if(tmp ~ /[0-9]/)
{
str=tmp
str1=(str1 str)
}
}
print str1
}'

输出
1231456789


或者:

$ echo b1c2d3d1456e78f9 | awk '
{
string=$0
len=length(string)
for(i=1; i<=len; i++)
{
tmp=substr(string,i,1)
if(tmp ~ /[0-9]/)
{
str=tmp
str1=(str1 str)
}
}
print str1
}'

 

 

利用同样的方法,可以拓展到一些其他的功能,比如提取大小写的英文字母或者是一些特殊的符号。我们只需要更改[0-9]这个条件:吐舌头

[a-zA-Z]           提取大小写英文字符

[^0-9a-zA-Z]    提取除了数字,大小写英文以外的字符等等。

$ echo b1c2d3d1456e78f9 | awk '
{
string=$0
len=length(string)
for(i=1; i<=len; i++)
{
tmp=substr(string,i,1)
if(tmp ~ /[a-zA-Z]/)
{
str=tmp
str1=(str1 str)
}
}
print str1
}'


 

 

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值