AWK入门1

基本就是翻译一下http://www.theunixschool.com/p/awk-sed.html里面的内容
首先看语法,awk的命令格式是 awk 'pattern{action}' file,表示awk对文件中所有符合pattern的hang执行action操作,如果pattern为空,则默认为对文件中的每一行进行操作,如果action为空,则默认为打印这一行。但是如果pattern和action都为空,那什么操作都不会做。
其次看特殊变量,awk自动的把每行都分成若干列,默认的分隔符是空格和tab,可以通过-F指令来指定其他的分隔符,分割出来的列用$1, $2……来代表,$0则表示整行,还有个特殊符号NR表示行号。下面看几个例子:
先创建一个用空格和tab分隔的文件file1
[quote]$ cat file1
FirstName LastName Age
John Banks 42
Neil Santos 25
Sara Young 17 [/quote]
打印第二列的姓
[quote]$ awk '{print $2}' file1
LastName
Banks
Santos
Young[/quote]
不想打印第一行的LastName这个提示
[quote]$ awk 'NR!=1{print $2}' file1
Banks
Santos
Young[/quote]
打印整个文件
[quote]$ awk '1' file1
FirstName LastName Age
John Banks 42
Neil Santos 25
Sara Young 17 [/quote]
或者用另一种语法[quote]$ awk '{print $0}' file1
FirstName LastName Age
John Banks 42
Neil Santos 25
Sara Young 17 [/quote]

现在创建一个用逗号做分隔符的文件,也就是csv格式的文件
[quote]cat file2
First Name, Last Name, age
Barack,Obama,50
字段1,字段2,44[/quote]

打印第二个字段
[quote]$ awk -F, '{print $2}' file2
Last Name
Obama
字段2[/quote]
还有另一种写法
[quote]$ awk '{print $2}' FS=, file2
Last Name
Obama
字段2[/quote]
指定输出字段的分隔符
[quote]$ awk '{print $1, $3}' FS=, OFS="|" file2
First Name| age
Barack|50
字段1|44[/quote]

要注意的是,如果使用-F指定分隔符,那么要放在patter和action之前,如果使用FS指定分隔符,要放在patter和action之后,如果放错了会提示语法错误。FS和OFS所用的分隔符,在不会引起歧义或者转义的情况下,可以不加双引号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值