awk命令个人总结(以CentOS 6.3环境下shell为例)

awk命令个人总结(以CentOS 6.3环境下shell为例)

最近学了一点Shell里的awk命令基础。下面根据自己所学做一些总结,仅供日后翻阅。如有错误,烦请指正。

awk是什么?

awk其实算是一种编程语言,仔细拓展开可以有好多好多内容,而我学的知识一点皮毛,可能连入门都算不上了。在Linux下,awk可以用来对一些文本数据进行筛选和扫描处理。

awk是怎么工作的?

awk一般可以搭配管道符使用,将送入awk出来的文本文件扫描处理。对于文件的名字赋予$0,即第一个位置变量。awk一次扫描一行文本,从第一行到最后一行,寻找匹配要求的行,进行用户操作。awk默认的分隔符是空格或者制表符,每一行依据分隔符,分为多个列,或者更准确讲是数据段,分别赋予$1、$2…..
基本结构如下

       `awk '条件1{操作1}条件2{操作2}'`文件名

条件:一般是关系表达式
操作:默认处理是print打印输出处理行

awk的两个特殊条件

BEGIN和END,这两个放在条件位置,可以使在其他命令执行前或执行后进行BEGIN和END对应的指令。具体下面再举例子说明。

awk的基本选项
-F 指定分隔符,-F后面加指定的分隔符
-f 指定脚本,-f后面加脚本文件,从该脚本中读取awk命令,代替输入
awk使用例子

1.先正则表达式匹配整个test文档里的空白行,每一个空白行打印一次 “blank line”

 awk '/^$/{print "blank line"}' test

2.正则表达式匹配/etc/sysconfig/network里的的主机名行,打印主机名

awk '/HOSTNAME/{print}' /etc/sysconfig/network

3.用-f 选项调用一个awk脚本来对sample.txt做操作,awk脚本是test.sh

awk -f test.sh sample.txt

4.输出a,b,c,$1 $2 $3 分别对应输出的a,b,c

echo a b c | awk'{print $1,$2,$3}'

5.读取输入的行并输出数据段个数

echo a b c | awk '{print $0}'

6.指定分隔符是” : “,输出passwd文本的第一列,即系统的用户名

awk -F ":" '{print $1}' /etc/passwd //写法1
awk 'BEGIN {FS=":"}{print $1}' /etc/passwd //写法2

7.awk中的变量,默认是空字串或者0

awk '/^$/ {x+=1} END {print x}' test //统计空白行行数并输出

8.awk结合条件语句使用,因为awk都使用了BEGIN模式,所以,在没读取test文档内容之前,就回把BEGIN后面的指令执行。

awk '{if($1<10) print "a"; else print "b"}' test  
//如果test文件中每一行的第一个参数小于10,则输出a,否则输出b

awk 'i=1 {} BEGIN{while(i<=10) {++i;print i}}'   
//i初始值为1,当i<=10,输出i的值,i++

awk 'BEGIN { do { ++x;print x } while (x<=10)}' 
 //do-while格式

awk 'BEGIN{for(i=1;i<=10;i++) print i}'   //for循环
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值