Chinaunix首页 | 论坛 | 博客
  • 博客访问: 656922
  • 博文数量: 87
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2022
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-23 11:16
个人简介

西邮大三狗!!!

文章分类

全部博文(87)

文章存档

2015年(47)

2014年(40)

分类: LINUX

2014-09-20 11:27:23

1.awk | -F field-separator| `cmd` input file
   awk -F : `cmd` input file
2.将awk命令插入一个文件,并使awk程序可以执行,然后用awk命令解释器作为脚本首行。
3.将所有awk命令插入一个单独文件
   awk -f awk-script-file inputfile
模式和动作
模式:两个特殊断 BEGIN和END
动作:实际动作大多在{}内指明
域和记录
浏览域表记为 $1,$2,......$n($1-$n称为域标识)

输出
1.抽取域
awk -F: '{print $1}' /etc/passwd
2.保存输出
awk -F: '{print $1}' /etc/passwd | tee user
awk -F: '{print $1}' /etc/passwd >user
3.使用标准输出
4.打印所有记录
awk -F: '{print $0}' /etc/passwd
5.打印单独记录
awk -F: '{print $1,$4}' /etc/passwd
6.打印报告头
awk -F: 'BEGIN {print "NAME\n"} {print $1}' /etc/passwd
7.打印结尾
awk -F: '{print $1} END {print "this is all users"}' /etc/passwd

条件操作符
1.匹配
awk '{if($1~/root/) print $0}' /etc/passwd   //{if($1~/root/) print}表示如果field1包含root,打印它//
2.精确匹配
使用等号 ==
3.不匹配
!~
4.小于
if($6 < $7)
5.小于等于
6.大于
7.设置大小写
awk '/[Rr]oot/' /etc/passwd
8.任意字符
awk '$~/^...a/' /etc/passwd      //^...a表示第四个字幕是a//
9.或关系匹配
'$0 ~/(root|ftp)/'
10.行首
awk '/^48/' input-file       // ^48(行首包含48)
11.AND &&
'{if ($1=="P.bunny" && $4=="") print $0}'
12.OR ||

内置变量:
ARCC                              命令行参数个数
ARGV                          命令行参数排列
ENVIRON                        支持队列中系统环境变量的使用
FNR                                 浏览文件的记录数
FS                                    置顶分隔符,等价于-F
NF                                    浏览记录的域的个数
NR                                    已读的记录数
OFS                                  输出域分隔符
ORS                                输出记录分隔符
RS                                   控制记录分隔符

设置输入域到变量名
awk -F '{name=$1; pach=$7; if(name~/root/) print name" pach is "pach}' /etc/passwd
域值比较操作
awk '{if($6<$7) print $0}' input-file
修改改数值域取值
awk ‘{if($1="NAME) $6=$6-1; print$1,$6,$7}' input-file
修改文本域
awk ’{if($1="J.Troll") ($1="J.L.Troll); print $1}' input-file
只显示修改改记录
awk ’{if($1="J.Troll") {$1="J.L.Troll; print $1}}' input-file
创建新的输入域
awk '{if($6>$7) {$8=$6-$7; print $1,$8}' input-file
增加列值
awk '(tot=$6) END {print"..................."tot}' input-file
文件长度相加
ls -l | awk '/^[^d]/ {print $9"\t $5} {tot+ =$5} END {print "tltal kb:"tot}'
阅读(2834) | 评论(0) | 转发(1) |
0

上一篇:SUID和SGID详解

下一篇:笔记:awk(二)

给主人留下些什么吧!~~