`
gogole_09
  • 浏览: 201803 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

awk相关整理

阅读更多

总结一下,awk的相关功能:

  awk '{print $0}'

 在 Awk 中,变量 $0 表示整个当前行,因此 printprint $0 的作用完全相同

 

awk -F":" '{print $1 " " $3}' /etc/passwd

  -F : 参数指定行的内容用的分隔符,如上,使用的是 : 号做的分割处理

 

  比如:

 

awk -F":" '{print "username:" $1  "\t\tuid:" $3}' /etc/passwd
 
显示为:

 

username:root		uid:0
username:daemon		uid:1
username:bin		uid:2
username:sys		uid:3
username:sync		uid:4
username:games		uid:5

 

 BEGIN和END

     awk允许在执行文本文件之前,执行相应的初始化代码,同样,awk 也支持在文件处理完成以后执行相应的代码,这个可以用定义END专用代码块来做到(通常情况下,END 块用于进行最终计算或打印应该在输出流结尾处出现的汇总信息)。

 

  正则表达式的查找

     比如,需要查找包含有 "hp"这个词的行;

 

awk '/hp/ {print}' /etc/passwd
 

     显示的结果为:

hplip:x:112:7:HPLIP system user,,,:/var/run/hplip:/bin/false

 

   表达式代码块

     寻找以":"分隔,第一列为"ivanzhangwb"的行:

    

awk -F":" '$1 =="ivanzhangwb" {print}' /etc/passwd
     

     结果显示为:

 

ivanzhangwb@ivanzhangwb-notebook:~$ awk -F":" '$1 =="ivanzhangwb" {print}' /etc/passwd

ivanzhangwb:x:1000:1000:ivanzhangwb,,,:/home/ivanzhangwb:/bin/bash
 

 

   
 条件语句
   
awk -F":" '{if($1=="ivanzhangwb"){print}}' /etc/passwd
     
 特殊变量
   NF: 字段数量
    打印出每行的字段数量为多少.
 
 awk '{print NF}' /etc/passwd
 
 RS变量 和 OPS 变量.  
  RS 变量告诉 awk 当前记录什么时候结束,新记录什么时候开始。
  OFS 变量表示每个字符串之间打印的间隔符号.

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics