现在的位置: 首页 > 综合 > 正文

awk — Linux 的利器

2014年01月04日 ⁄ 综合 ⁄ 共 794字 ⁄ 字号 评论关闭
 
awk 学习之路:

awk 主要是用来在linux 处理文本的强大工具,也是一种编程语言,有自己的语法。
开始学习一下:
加入有一个test.log 本文文件;
test.log 内容如下:
1,2,first
2,1,second
3,3,third
实现功能如下:
1,现在,要输出每一行的前两个字段,代码如下:
[root@crazy~]# awk -F , '{print $1,$2}' test.log
结果如下:
1 2
2 1
3 3
代码解释:-F 为制定读取文件的分割符,上面的代码,即为制定以逗号“,” 为分割符;
$1,$2 表示读取到的文件,第几列,$1 为第一列,$2 为第二列,依次类推;
test.log 为要读取的文件名;
2,增加对列的运算处理。实例:求出第一列大于第二列的每一行,代码如下:
[root@crazy~]# awk -F , '{ if ($1 > $2) print $1,$2}' test.log
结果如下:
2 1
代码解释:awk 支持基本的编程语法,如if, while 等,这样,就可以更加方便的处理文本;
3,格式化输出,指定输出文件的具体格式,实例:结果要以“#”分割,代码如下:
[root@crazy~]# awk -F , '{ printf("%s#%s#\n", $1,$2)}' test.log
结果如下:
1#2#
2#1#
3#3#
##
代码解释:printf 为格式化输出函数。上面的例子,发现,多出最后一行。可以利用if 语句来处理掉:
[root@crazy~]#awk -F , '{if($1) printf("%s#%s#\n", $1,$2)}' test.log
结果如下:
1#2#
2#1#
3#3#
4,对行的处理(使用NR)
示例:打印出第2行的第3列信息
awk 'NR==2{print $3}' 2012.log 
代码解释:NR==2 表示第2行。
awk 'NR ==2,NR==5{print}' 20120525.log
代码解释:打印出第2行到第5行。

抱歉!评论已关闭.