使用awk提取字符串中的数字或字母

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用awk提取字符串中的数字或字母相关的知识,希望对你有一定的参考价值。

1.提取字符串中的数字

$ echo ‘dsFUs34tg*fs5a%8ar%$#@‘ |awk -F "" ‘
{
  for(i=1;i<=NF;i++) 
  {  
    if ($i ~ /[[:digit:]]/)     
    {
      str=$i
      str1=(str1 str)
    }  
  } 
  print str1
}‘

输出
3458

或

$ echo ‘dsFUs34tg*fs5a%8ar%$#@‘ |awk -F "" ‘
{
  for(i=1;i<=NF;i++) 
  {  
    if ($i ~ /[0-9]/)             
    {
      str=$i
      str1=(str1 str)
    }  
  } 
  print str1
}‘

输出
3458

2.提取字符串中的小写字母

$ echo ‘dsFUs34tg*fs5a%8ar%$#@‘ |awk -F "" ‘
{
  for(i=1;i<=NF;i++) 
  {  
    if ($i ~ /[[:lower:]]/)         
    {
      str=$i
      str1=(str1 str)
    }  
  } 
  print str1
}‘

输出
dsstgfsaar

3.提取字符串中的大写字母

$ echo ‘dsFUs34tg*fs5a%8ar%$#@‘ |awk -F "" ‘
{
  for(i=1;i<=NF;i++) 
  {  
    if ($i ~ /[[:upper:]]/)         
    {
      str=$i
      str1=(str1 str)
    }  
  } 
  print str1
}‘

输出
FU

4.提取字符串中的字母(不区分大小写)

法一:


$ echo ‘dsFUs34tg*fs5a%8ar%$#@‘ |awk -F "" ‘
{
  for(i=1;i<=NF;i++) 
  {  
    if ($i ~ /[a-z]/)                                                                 
    {
      str=$i
      str1=(str1 str)
    }  
  } 
  print str1
}‘

输出
dsFUstgfsaar

法二:

$ echo ‘dsFUs34tg*fs5a%8ar%$#@‘ |awk -F "" ‘
{
  for(i=1;i<=NF;i++) 
  {  
    if ($i ~ /[[:alpha:]]/)            
    {
      str=$i
      str1=(str1 str)
    }  
  } 
  print str1
}‘

输出:
dsFUstgfsaar

5.提取字符串中的非数字字符

法一:

$ echo ‘dsFUs34tg*fs5a%8ar%$#@‘ |awk -F "" ‘
{
  for(i=1;i<=NF;i++) 
  {  
    if ($i ~ /[^0-9]/)       
    {
      str=$i
      str1=(str1 str)
    }  
  } 
  print str1
}‘

输出
dsFUstg*fsa%ar%$#@

法二:

$ echo ‘dsFUs34tg*fs5a%8ar%$#@‘ |awk -F "" ‘
{
  for(i=1;i<=NF;i++) 
  {  
    if ($i !~ /[0-9]/)     
    {
      str=$i
      str1=(str1 str)
    }  
  } 
  print str1
}‘

输出
dsFUstg*fsa%ar%$#@

法三:

echo ‘dsFUs34tg*fs5a%8ar%$#@‘ |awk -F "" ‘
{
  for(i=1;i<=NF;i++) 
  {  
    if ($i ~ /[^[:digit:]]/)        
    {
      str=$i
      str1=(str1 str)
    }  
  } 
  print str1
}‘

输出
dsFUstg*fsa%ar%$#@

6.提取字符串中的除数字字母外的字符

法一:
$ echo ‘dsFUs34tg*fs5a%8ar%$#@‘ |awk -F "" ‘
{
  for(i=1;i<=NF;i++) 
  {  
    if ($i ~ /[^0-9a-zA-Z]/)         
    {
      str=$i
      str1=(str1 str)
    }  
  } 
  print str1
}‘

输出:
*%%$#@

法二:

$ echo ‘dsFUs34tg*fs5a%8ar%$#@‘ |awk -F "" ‘
{
  for(i=1;i<=NF;i++) 
  {  
    if ($i ~ /[^[:alnum:]]/)         
    {
      str=$i
      str1=(str1 str)
    }  
  } 
  print str1
}‘

输出:
*%%$#@

法三:

$ echo ‘dsFUs34tg*fs5a%8ar%$#@‘ |awk -F "" ‘
{
  for(i=1;i<=NF;i++) 
  {  
    if ($i ~ /[^[:digit:]]/ && $i ~ /[^[:lower:]]/ && $i ~ /[^[:upper:]]/)         
    {
      str=$i
      str1=(str1 str)
    }  
  } 
  print str1
}‘

输出
*%%$#@


以上是关于使用awk提取字符串中的数字或字母的主要内容,如果未能解决你的问题,请参考以下文章

如何在EXCEL中提取中间部分的数字或字母

不使用任何预定义函数从字母数字字符串中提取数值

如何用awk命令提取文件中的某一列并统计该列中某个数字出现的次数?

JavaScript 代码片段

在 Bigquery 中看到“数字 + 一个字母 + [逗号或空格]”后提取字符串的正则表达式

java正则提取字符串中的符号汉字数字字母