awk命令的用法实战

 

1.如果需要取出width和height后面的值的话,一般大家会这样做,即做两次awk操作

echo "width:720 height:360" | awk '{print $1;print $2}' | awk -F: '{print $2}'

 

2.通过在awk中指定两个记录分隔符(空格和:),即可一次性的提取出width和height后面的值,在awk中支持多个记录分隔符的写法如下

echo "width:720 height:360" | awk -F'[ :]' '{print $2,$4}'

 

3.

一般像下面这样写,多一个加号表明将连续出现的记录分隔符当做一个来处理

echo "width:720 height:360" | awk -F'[ :]+' '{print $2,$4}'

 

注意:

在awk中,当记录分隔符指定为空字符串时,awk会将多个连续的空白看做一个单一的记录分隔符。此外,awk还会忽略开头和结尾处的空白。

awk支持正则表达式形式的记录分隔符,你可以改成其它的正则表达式来进行测试。上面虽然介绍了awk中使用多个记录分隔符的写法,但是这些记录分隔符都是单个字符,如果记录分隔符是个字符串怎么办呢?

之前说过,awk支持正则表达式形式的记录分隔符,那就写个正则表达式就好,比如要指定分隔符为one和two

 

命令行选项 -F"[@ /t]" 告诉awk @, 空格和Tab都是字段分隔符,例如:

 

awk -F"[@ /t]" '{print $2,$3}' test

以@,空格,Tab键分割test文件的每一行,并输出第二、第三列。

 

awk '$2~/^(126|yahoo)/{print $2, $3}' test

如果改行的第二个字段以"123""yahoo"开始,则输出改行的第二、第三列。

 

awk '$1~/[0-9][0-9]$/{print $1, $3}' test

如果改行的最后两个字段以数字结束,则输出改行的第一、第三列。

awk '/mail/{print $0}' test 

输出test文件中含有"mail"字符串的行

$awk '$2~/mail/{print $0}' test

输出test文件中第二个字段含有"mail"字符串的行

$awk '$2 == "gmail.com"{$1 = "ggg";print}' test

输出test文件中第二个字段是"gmail.com"的行,并把改行第一列改为"ggg"

awk '$2 == "gmail.com"{$1 = "ggg"}{print}' test

输出test文件中所有行,并且如果第二个字段是"gmail.com",把改行第一列改为"ggg"

awk '{IGNORECASE=1;if($2 ~/^[a-z]/&& $2~/net$/){print $0}}' test

打开test文件,忽略字母大小写,如果第二字段以[a-z]开头,并以"net"结尾,则输出该行。

 

awk -F '-' '{print $1;}' data

 

http://blog.csdn.net/hongchangfirst/article/details/25071937

http://blog.csdn.net/wulong710/article/details/41864929

http://blog.csdn.net/feliciafay/article/details/8282780

http://www.cnblogs.com/peizhe123/p/6516099.html

 

posted @ 2017-03-14 20:21  Agoly  阅读(758)  评论(0编辑  收藏  举报