awk 初步学习笔记
来源:互联网 发布:java spring mvc 编辑:程序博客网 时间:2024/06/03 22:44
1 . awk 的应用场景
需要重新安排数据的格式时
2 . awk 的格式
awk 'BEGIN {startup code} conditions1{actions1} conditions2{actions2} ... END {cleanup code}'
#其中BEGIN 与 END 语句组是可选的
#conditions[:alnum:] 如果满足则执行相应的actions[:alnum:]
#conditions[:alnum:] 如果不存在 ,则直接执行 actions[:alnum:]
3 . awk 的变量
$0 存储awk当前处理的行
$1 存储awk当前处理的行的第一个字段
$2 存储awk当前处理的行的第二个字段
....
$n 存储awk当前处理的行的第n 个字段
FS awk处理输入的行时使用的字段分隔符( Field Seperator )
OFS awk输出的字段的分隔符( Output Field Seperator )
NF awk当前处理的行中有多少个字段( Number of Fields )
NR awk当前正在处理第几行数据(Number of current row )
4 . awk使用的print的特点
--print 后面跟着多个字段 ,每个字段由逗号隔开 ,输出时 ,每个字段之间自动加OFS变量的值;
(如果不使用逗号隔开每个字段那么可能导致输出格式混乱 。)
--print 还有一个特点,就是输出行的末尾会自动输出换行符.
owner@YZY:~$ echo 07302284 yao 19890318 shantou guangdong | awk '{print NR , $1 , $2 , $3 }'
1 07302284 yao 19890318
owner@YZY:~$ echo 07302284 yao 19890318 shantou guangdong | awk '{print NR $1 $2 $3 }'
107302284yao19890318
owner@YZY:~$ echo 07302284 yao 19890318 shantou guangdong | awk '{print NR "/t" $1 "/t" $2 "/t" $3 }'
1 07302284 yao 19890318
5 . awk使用的printf的特点
-- 必须显式地换行
6 . awk的FS变量的用法
--在BEGIN语句中设置即可
--使用-F选项
owner@YZY:~$ grep owner /etc/passwd | awk 'BEGIN {FS=":"}{print $1,$3,$4}'
owner 1000 1000
wner@YZY:~$ grep owner /etc/passwd | awk -F: '{print $1,$3,$4}'
owner 1000 1000
7 . awk的OFS变量的用法
--由于print会自动使用OFS ,并且OFS默认是一个空格 ,所以如果对格式有特别的要求 ,可以在BEGIN语句中对OFS进行设置.
--使用-v 选项后面跟一个用单引号括起来的对OFS的赋值语句
owner@YZY:~$ echo 07302284 yao 19890318 | awk 'BEGIN {OFS="---new OFS---"} {print $1 , $2 , $3}'
07302284---new OFS---yao---new OFS---19890318
wner@YZY:~$ echo 07302284 yao 19890318 | awk -v 'OFS=---new OFS---' '{print $1 , $2 , $3}'
07302284---new OFS---yao---new OFS---19890318
8 . awk中使用变量
--直接使用,不需要使用$作为前缀
#文件marks
name chinese english math
yao 100 100 100
yu 90 90 90
zeng 80 80 80
owner@YZY:~$ cat marks | awk '
>NR==1{printf "/t%s/t%s/t%s/t%s/t%s/n" , $1 , $2 , $3 , $4 , "sum"}
>NR>=2{total=$2+$3+$4 ; printf "/t%s/t%d/t%d/t%d/t%d/n" , $1 , $2 , $3 , $4 , total}'
name chinese english math sum
yao 100 100 100 300
yu 90 90 90 270
zeng 80 80 80 240
- awk 初步学习笔记
- 初步学习awk
- 轻松学习Linux之AWK使用初步
- [转]Awk学习笔记
- Awk学习笔记(转)
- awk学习笔记
- Awk学习笔记
- Awk学习笔记
- Awk学习笔记
- Awk学习笔记
- awk学习笔记
- Awk学习笔记
- awk学习笔记
- [转]Awk学习笔记
- AWK学习笔记
- Awk学习笔记
- Awk学习笔记
- AWK学习笔记
- nc命令详解 转 http://linux.chinaunix.net/techdoc/system/2008/10/14/1038114.shtml
- 中断处理中的延迟调度和内核抢占
- 载入一个COM组件出错的分析与处理
- struts2中转double类型转换问题
- HDU 1686 Oulipo (kmp)
- awk 初步学习笔记
- Mac OS X: 登录/退出自动运行程序的设置
- jquery UBB 留言插件
- Oracle OS认证 口令文件 密码丢失处理
- 好久没写BLOG了,把最近读的几本书贴一下
- Linux内核链表Vs传统链表
- 关于JSP页面getparameter中文出现乱码解决方案
- MacOsx Running items at login
- 一些搓程序