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

简介:

1.提取字符串中的数字 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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.提取字符串中的小写字母

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
echo  'dsFUs34tg*fs5a%8ar%$#@'  | awk  -F  ""  '
{
   for (i=1;i<=NF;i++) 
   {  
     if  ($i ~ /[[:lower:]]/)         
     {
       str=$i
       str1=(str1 str)
     }  
  
   print str1
}'
 
输出
dsstgfsaar

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
echo  'dsFUs34tg*fs5a%8ar%$#@'  | awk  -F  ""  '
{
   for (i=1;i<=NF;i++) 
   {  
     if  ($i ~ /[[:upper:]]/)         
     {
       str=$i
       str1=(str1 str)
     }  
  
   print str1
}'
 
输出
FU

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

法一:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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.提取字符串中的非数字字符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
法一:
 
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.提取字符串中的除数字字母外的字符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
法一:
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
}'
 
输出
*%%$ #@





本文转自 xoyabc 51CTO博客,原文链接:http://blog.51cto.com/xoyabc/1855224,如需转载请自行联系原作者
相关文章
|
5月前
|
编译器 C语言
字符串\统计字符
字符串\统计字符
34 3
|
5月前
统计出其中英文字母、空格、数字和其它字符的个数
【6月更文挑战第8天】统计出其中英文字母、空格、数字和其它字符的个数。
37 9
正则表达式开头提取前三个数字
正则表达式开头提取前三个数字
|
6月前
输入一个字符,判断该字符是大写字母、小写字母,数字还是其他字符,并作相应的显示。
输入一个字符,判断该字符是大写字母、小写字母,数字还是其他字符,并作相应的显示。 提示:利用ord()函数来获得字符的 ASCIl。
124 1
输入一个字符,判断该字符是大写字母、小写字母,数字还是其他字符,并作相应的显示。
从键盘录入一个字符串,统计该串中有大写字母、小写字母、数字各有多少个。比如:Hello12345World大写:2个 小写:8个数字:5个。
从键盘录入一个字符串,统计该串中有大写字母、小写字母、数字各有多少个。比如:Hello12345World大写:2个 小写:8个数字:5个。
262 0
统计数字字符和空格
统计数字字符和空格
108 0
判断字符串首个字母是否大写,若大写,则输出该字符串中大写字母的个数 并打印。
判断字符串首个字母是否大写,若大写,则输出该字符串中大写字母的个数 并打印。
153 0
7-8 字符串字母大小写转换 (15 分)
7-8 字符串字母大小写转换 (15 分)
305 0
有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数
有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数
300 0
(JAVA编程练习):输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
(JAVA编程练习):输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
(JAVA编程练习):输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。