Linux学习---shell编程(08-awk)
2016-09-06 13:27
357 查看
awk ‘条件1{动作1}条件2{动作2}…’ 文件名
条件(Pattern):
一般适用关系表达式作为条件
动作(Action):
格式化输出
流程控制语句
BEGIN关键字
在所有数据提取之前,执行BEGIN后的动作
它的作用是啥呢
FS内置变量,用于指定分隔符
注释:第一行没有处理,因为awk执行时先读入第一行数据,在执行动作,所以{FS=”:”}指定分隔符的动作在读取第一行数据之后执行,所以第一行只能按照默认分隔符空格分割
用BEGIN指定在读取第一条数据之前,就执行后面的动作{FS=”:”}来指定分隔符,然后才会读取数据
END关键字
所有数据都处理完之后,执行END后的动作
条件判断
条件(Pattern):
一般适用关系表达式作为条件
动作(Action):
格式化输出
流程控制语句
simin@iZ25c6i87bkZ:~$ cat test ID Name Age 1 HanMei 21 2 LiLei 22 3 Simin 23 simin@iZ25c6i87bkZ:~$ awk '{printf $1"\t"$3"\n"}' test ID Age 1 21 2 22 3 23 simin@iZ25c6i87bkZ:~$ #awk会把文件中的内容按行输入,然后处理 |
simin@iZ25c6i87bkZ:~$ df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 59G 3.2G 53G 6% / none 4.0K 0 4.0K 0% /sys/fs/cgroup udev 3.9G 4.0K 3.9G 1% /dev tmpfs 799M 388K 799M 1% /run none 5.0M 0 5.0M 0% /run/lock none 3.9G 0 3.9G 0% /run/shm none 100M 0 100M 0% /run/user simin@iZ25c6i87bkZ:~$ df -h|awk '{printf $1"\t" $5"%\n"}' #注意:ubuntu中要加%,否则系统会认为内容中的%是命令的一部分,centos中不用加% Filesystem Use% /dev/xvda1 6% none 0% udev 1% tmpfs 1% none 0% none 0% none 0%s simin@iZ25c6i87bkZ:~$ |
simin@iZ25c6i87bkZ:~$ df -h|grep /dev/xvda1 |awk '{printf $5"%\n"}' |cut -d "%" -f 1 6 #这样就可以获得/dev/xvda1分区的使用率了 |
BEGIN关键字
在所有数据提取之前,执行BEGIN后的动作
simin@iZ25c6i87bkZ:~$ awk 'BEGIN{printf "开始啦\n"}{printf $1"\t" $3"\n"}' test 开始啦 ID Age 1 21 2 22 3 23 |
FS内置变量,用于指定分隔符
simin@iZ25c6i87bkZ:~$ awk '{FS=":"}{printf $1"\t" $3"\n"}' /etc/passwd root:x:0:0:root:/root:/bin/bash # 看下面注释 daemon 1 bin 2 sys 3 mail 8 。。。 。。。 oxxxx2 1000 simin 1001 |
simin@iZ25c6i87bkZ:~$ awk 'BEGIN{FS=":"}{printf $1"\t" $3"\n"}' /etc/passwd root 0 bin 2 sys 3 mail 8 。。。 oxxxx2 1000 simin 1001 |
END关键字
所有数据都处理完之后,执行END后的动作
Finishedsimin@iZ25c6i87bkZ:~$ awk 'BEGIN{FS=":"}END{printf"Finished\n"}{printf $1"\t" $3"\n"}' /etc/passwd root 0 bin 2 sys 3 mail 8 news 9 。。。 oxxxx2 1000 simin 1001 Finished |
条件判断
simin@iZ25c6i87bkZ:~$ awk 'BEGIN{FS=":"}$3>10{printf $1"\t" $3"\n"}' /etc/passwd proxy 13 www-data 33 backup 34 list 38 irc 39 gnats 41 nobody 65534 libuuid 100 syslog 101 messagebus 102 ntp 103 sshd 104 oxxxx2 1000 simin 1001 |
相关文章推荐
- Linux学习日记 —— 11.2.3 Shell编程-字符截取命令-awk命令
- linux 学习资料、Linux学习书籍(入门书籍、shell编程)推荐
- Linux命令学习手册-awk命令
- 从命令行取linux中eth0的IP地址学习awk
- Linux学习之shell编程三
- Linux 学习笔记_10_Shell编程_2_Shell编程语法(三)
- linux awk 学习笔记
- awk 好用的数据处理工具,linux学习笔记1
- linux命令终极学习-awk
- linux命令终极学习-awk
- 【linux学习笔记】awk用法总结
- linux 学习资料(入门书籍、shell编程)推荐
- linux awk 数组的学习心得
- Linux之awk学习(二)
- Linux入门学习-SHELL编程基础_第四章
- 轻松学习Linux之AWK使用初步
- Linux之awk学习
- 最近学习的linux命令 grep,awk,cut,uniq,wc 实际应用例子
- Linux 学习笔记_10_Shell编程_1_Shell编程语法
- Linux学习笔记:awk详细用法