Chinaunix首页 | 论坛 | 博客
  • 博客访问: 59720
  • 博文数量: 17
  • 博客积分: 25
  • 博客等级: 民兵
  • 技术积分: 220
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-07 11:14
个人简介

。roth lower(substr(ename,2,length(ena)))

文章分类

全部博文(17)

文章存档

2017年(14)

2013年(3)

我的朋友

分类: LINUX

2017-02-26 19:10:23

j简单介绍下awk:报告生成器,
一行读取,按 文本分隔符 切割,如空格

如文本:this is a test.

切割为四部分
点击(此处)折叠或打开

  1. $0 [this][is][a][test.]
  2. $1 [this] $2 [is] $3 [a] $4[test.]


一,print,printf

格式化以后,显示

格式化以后,显示

awk [options] 'script' f1,f2 ...

awk [options] 'PATTERN' '{action}' f1 f2 ... 模式

输出 print,printf

awk 'BEGIN{OFS="#"}{print $1,$2}' test.txt
this#is


输出 print,printf

nawk

gawk

which awk 路径

ls -l /bin/awk 链接
print 自带换行

printf 无换行

点击(此处)折叠或打开

  1. linux-SUSE:/home/test # awk -v test="hello,lilei" 'BEGIN{printf test}'
  2. hello,lileilinux-SUSE:/home/test # awk -v test="hello,lilei" 'BEGIN{print test}'
  3. hello,lilei



二,awk 变量
2.0 修饰符

N 空格

-左对齐

+右对齐


2.1 内置变量

FS: field separator 默认空白字符

RS:Record separator 默认换行符

OFS:Output Field Separator

ORS:Output Row Separator

2.2 awk 内置变量之数据变量

NR:the number of input records awk命令所处理的记录数,有多个文件时会把处理的多个文件行统一计数

NF:Number of Field 当前记录的field个数

FNR:与NR不同,FNR记录正在处理的行驶当前这文件中被总共处理的行数

ARGV:数组,保持命令行本身用它,如: awk 'print $0' a.txt b.txt ,此命令,ARGV[0]保持awk,ARGV[1]保存a.txt

ARGC:awk命令参数个数

FILENAME:awk命令所处理的文件名

ENVIRON:当前环境变量及其值关联组

如:awk 'BEGIN{print ENVIRON["PATH"]}'

点击(此处)折叠或打开

  1. linux-SUSE:/home/test # awk '{print FNR}' test.txt testSer.py
  2. 1
  3. 1
  4. 2
  5. 3
  6. 4
  7. 5
  8. 6
  9. 7
  10. 8
  11. 9
  12. linux-SUSE:/home/test # awk '{print NR}' test.txt testSer.py
  13. 1
  14. 2
  15. 3
  16. 4
  17. 5
  18. 6
  19. 7
  20. 8
  21. 9
  22. 10


2.3自定义变量


2.4 布尔值

wak,任何非0 值 或非空都为真,反之为假

2.5 比较操作符

x

x<=y

x>y

x>=y

x==y

x!=y

x~y x能被匹配规则y 匹配到就为真

x!~y

2.6 三元表达式

slector?if-true-exp:if-false~exp

a>b?a is Max,or b is Max

2.7 awk -F:'$3>=500{print $1 $3}' /etc/passwd

显示passwd中id号大于500的行的1,3列


点击(此处)折叠或打开

  1. linux-SUSE:/home/test # awk -F: '$3>=500{print $1,$3}' /etc/passwd
  2. nobody 65534
  3. openlinux 1000

2.8 找到所有 bash 用户

awk -F: '$7~"bash"{print $1,$7}' /etc/passwd

点击(此处)折叠或打开

  1. linux-SUSE:/home/test # awk -F: '$7~"bash$"{print $1,$7}' /etc/passwd
  2. at /bin/bash
  3. bin /bin/bash
  4. daemon /bin/bash
阅读(442) | 评论(0) | 转发(0) |
0

上一篇:linux man for awk

下一篇:Py 格式化输出

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