Linux 对awk命令的补充

Linux 对awk命令的补充之前写的文章如下 Linux 简单使用 awk 命令 awk print 3 与 awk print 3 的区别 awk print 3 不会输出输入数据的

大家好,欢迎来到IT知识分享网。

之前写的文章如下:Linux 简单使用awk命令

awk “{ print $3 }”与awk ‘{ print $3 }’的区别

  • awk “{ print $3 }” 不会输出输入数据的第3列,因为双引号的变量$3会事先被shell解析。
  • awk ‘{ print $3 }’ 会输出输入数据的第3列,因为单引号里的变量$3不会被shell解析。

awk “{ print $3 }”的效果

decisionmaker@tdar-srv:~$ sudo docker images | grep "^ 
  
    " | awk "{ print $3 }" | head -n 10 
    
    
      cacd883da894 3 days ago 761MB 
      
      
        c79ed053e535 3 days ago 761MB 
        
        
          21a60c91ac3a 3 days ago 584MB 
          
          
            be5b6f 3 days ago 470MB 
            
            
              2deea4c664c6 3 days ago 450MB 
              
              
                cf0ae83a80eb 5 weeks ago 2.3GB 
                
                
                  ab7ce8 6 weeks ago 2.15GB 
                  
                  
                    a29947cdabf9 2 months ago 1.03GB 
                    
                    
                      38c97337ca10 2 months ago 1.03GB 
                      
                      
                        7bfb2f106f75 2 months ago 1.03GB 
                       
                      
                     
                    
                   
                  
                 
                
               
              
             
            
           
          
         
        
       
      
     
    
  

awk ‘{ print $3 }’的效果

decisionmaker@tdar-srv:~$ sudo docker images | grep "^ 
  
    " | awk '{ print $3 }' | head -n 10 cacd883da894 c79ed053e535 21a60c91ac3a be5b6f 2deea4c664c6 cf0ae83a80eb ab7ce8 a29947cdabf9 38c97337ca10 7bfb2f106f75 
  
Linux 对awk命令的补充

awk “{ print $3 }”与awk ‘{ print $3 }’的区别

当输入数据的列值含有空格时,awk输出的数据可能不符合预期

ecisionmaker@tdar-srv:~$ sudo docker images | head -n 10 REPOSITORY TAG IMAGE ID CREATED SIZE docker_flask_web latest a639e083bef9 3 days ago 761MB            cacd883da894 3 days ago 761MB docker_django_web latest c08331dfd077 3 days ago 761MB                  c79ed053e535 3 days ago 761MB                        21a60c91ac3a 3 days ago 584MB docker_php_php81 latest 191dcc3d38e0 3 days ago 883MB                              be5b6f 3 days ago 470MB                                    2deea4c664c6 3 days ago 450MB php 8.1-fpm 8c08df 13 days ago 449MB # awk '{print $5}' 不会输出SIZE那一列,因为SIZE前面那一列的列值(CREATE那一列)含有空格,而空格是awk默认的列与列之间的分隔符 decisionmaker@tdar-srv:~$ sudo docker images | grep "^                           " | awk '{print $5}' | head -n 10 days days days days days weeks weeks months months months                                                                                        

只能采取折中方案,输出不含空格的列值:

# 输出不含空格的第1列,第3列,最后一列 decisionmaker@tdar-srv:~$ sudo docker images | grep "^ 
  
    " | awk '{ print $1,$3,$NF }' | head -n 10 
   
     cacd883da894 761MB 
    
      c79ed053e535 761MB 
     
       21a60c91ac3a 584MB 
      
        be5b6f 470MB 
       
         2deea4c664c6 450MB 
        
          cf0ae83a80eb 2.3GB 
         
           ab7ce8 2.15GB 
          
            a29947cdabf9 1.03GB 
           
             38c97337ca10 1.03GB 
            
              7bfb2f106f75 1.03GB 
             
            
           
          
         
        
       
      
     
    
  
Linux 对awk命令的补充

当awk命令输入数据的列值含有空格时

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/92664.html

(0)
上一篇 2026-03-19 11:34
下一篇 2026-03-22 11:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信