Chinaunix首页 | 论坛 | 博客
  • 博客访问: 189784
  • 博文数量: 76
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 831
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-31 00:52
文章分类

全部博文(76)

文章存档

2010年(58)

2009年(18)

我的朋友

分类:

2010-01-27 15:18:09


Format:
awk '/pattern/' file
awk '{action}' file
awk '/pattern/ {action}' file

pattern, 模式,由正则表达式、判别条件真伪的表达式或二者的组合构成。


awk用$0表示整条纪录,纪录中的各个字段默认以空格作为分隔符,分别为$1,$2,$3等等。

变量NR表示纪录号。
变量NF表示纪录中的字段数。

~
  匹配操作符

jili@jili-desktop:~/test$ awk '$2 ~ /Ada/' txt
Marry Adams  5346   11/4/63     28765
显示第二个字段中含有Ada的纪录

Marryjili@jili-desktop:~/test$ awk '$2 !~ /Ada/' txt
Tom Jones 4424 5/12/66 543354
Sally Chang  1654   7/22/54     650000
Billy Black  1683   9/23/44     336500
Jones Tom

显示第二个字段中不含有Ada的纪录



元字符
^   
    行首定位符
$   
    行尾定位符
.   
    匹配一个字符
*   
    匹配零个或多个前导字符

    匹配一个或多个前导字符
?
   匹配零个或一个前导字符
[ABZ]   
    匹配ABZ一组字符中的任一个
[^ABZ]   
    匹配不在指定字符ABZ内的字符
A|B
    匹配A或B
(AB)+
    匹配一个或多个AB的组合,如AB, ABAB, ABABAB

\*   
    匹配星号本身
&   
   用在替代串中,代表查找串中匹配到的内容








Example

Sample text:
--------------------------------------------------------------------
Tom Jones    4424   5/12/66     543354
Marry Adams  5346   11/4/63     28765
Sally Chang  1654   7/22/54     650000
Billy Black  1683   9/23/44     336500
------------------------------------------------------------------------

jili@jili-desktop:~/test$ awk '/Tom/' txt
Tom Jones    4424   5/12/66     543354
jili@jili-desktop:~/test$ awk '/Tom/{print $1,$2}' txt
Tom Jones
jili@jili-desktop:~/test$ awk '{print $1,$2}' txt
Tom Jones
Marry Adams
Sally Chang
Billy Black
jili@jili-desktop:~/test$


jili@jili-desktop:~/test$ date | awk '{ print "Month:" $2 "\nYear:" $6 }'
Month:Jan
Year:2010
print 函数的参数可以是变量、数值或字符串常量。


jili@jili-desktop:~/test$ echo "linux unix" | awk '{ printf "my system is @%-20s@\n", $1 }'
my system is @linux               @
jili@jili-desktop:~/test$ echo "linux unix" | awk '{ printf "my system is @%20s@\n", $1 }'
my system is @               linux@
printf 函数可用于格式化输出


jili@jili-desktop:~/test$ awk '{print NR,$0}' txt
1 Tom Jones    4424   5/12/66     543354
2 Marry Adams  5346   11/4/63     28765
3 Sally Chang  1654   7/22/54     650000
4 Billy Black  1683   9/23/44     336500
变量NR表示纪录号。


jili@jili-desktop:~/test$ awk '{print $0, NF}' txt
Tom Jones    4424   5/12/66     543354 5
Marry Adams  5346   11/4/63     28765 5
Sally Chang  1654   7/22/54     650000 5
Billy Black  1683   9/23/44     336500 5
变量NF表示纪录中的字段数。


阅读(606) | 评论(0) | 转发(0) |
0

上一篇:grep usage

下一篇:Short key in Eclipse

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