码迷,mamicode.com
首页 > 其他好文 > 详细

浅谈awk的基本用法

时间:2016-02-04 12:28:20      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

awk

1.域和记录:

取第一域,并在开头和结尾加字符begin和end

通常使用BEGIN来显示变量和预置变量,使用END来输出最终结果。

awk  ‘ BEGIN  {print "being"}  {print $1}  END  {print "end"}‘   file

 

2.条件操作符:

第一字域,包含expect,就打印整行

awk ‘{if($1~/expect/) print $0}‘ c.sh 或者 awk ‘$1~/expect/{print $0}‘ file

 

精确匹配:,只打印第3 域等于"48"的记录

awk ‘$3=="48" {print $0}‘ file 

不等于: awk ‘$1 != "asima"‘ temp

 

不匹配: 打印整条不包含ASIMA 的记录

awk ‘$0 !~ /ASIMA/‘ temp 

 

小于: awk ‘{if ($1<$2) print $1 "is smaller"}‘ temp

 

设置大小写: awk ‘/[Gg]reen/‘ temp 打印整条包含Green,或者green 的记录

 

任意字符: awk ‘$1 ~/^...a/‘ temp 打印第1 域中第四个字符是a 的记录,符号’^’

代表行首,符合’.’代表任意字符

 

 

AND 与关系: awk ‘{if ( $1=="a" && $2=="b" ) print $0}‘ temp

OR 或关系: awk ‘{if ($1=="a" || $1=="b") print $0}‘ temp

 

for循环

awk -F "," ‘{for (i=1;i<=NF;i++) if($i~/a=/) {print $i}}‘

 

3.awk内置变量:

技术分享

例: awk ‘END {print NR}‘ temp                                          在最后打印已读记录条数

      awk ‘{print NF,NR,$0} END {print FILENAME}‘ temp

     awk ‘{if (NR>0 && $4~/Brown/) print $0}‘ temp          至少存在一条记录且包含Brown

     NF 的另一用法: echo $PWD | awk -F/ ‘{print $NF}‘      显示当前目录名

 

4. awk操作符:

在awk 中使用操作符,基本表达式可以划分成数字型、字符串型、变量型、域及数组元素

 

设置输入域到变量名:

awk ‘{name=$1;six=$3; if (six=="man") print name " is " six}‘ temp

 

域值比较操作:

awk ‘BEGIN {BASE="27"} {if ($4<BASE) print $0}‘ temp

 

修改数值域取值:(原输入文件不会被改变)

awk ‘{if ($1=="asima") $6=$6-1;print $1,$6,$7}‘ temp

 

修改文本域:

awk ‘{if ($1=="asima") ($1="desc");print $1}‘ temp

 

只显示修改记录:(只显示所需要的,区别上一条命令,注意{})

awk ‘{if ($1=="asima") {$1="desc";print$1}}‘ temp

 

创建新的输出域:

awk ‘{$4=$3-$2; print $4}‘ temp

 

统计列值:

awk ‘(tot+=$3);END {print tot}‘ temp 会显示每列的内容

awk ‘{(tot+=$3)};END {print tot}‘ temp 只显示最后的结果

awk ‘{total+=$1}END{print total}‘ a.txt 只显示最后的结果

 

文件长度相加:

ls -l|awk ‘/^[^d]/ {print $8"\t"$5} {tot+=$5} END{print "totKB:" tot}‘

只列出文件名:ls -l|awk ‘{print $9}‘ 常规情况文件名是第8域

 

5.awk打印除了第二列外所有列

cat /etc/passwd|awk -F: ‘{$2=null;print $0}‘ 就是把某一列制空

浅谈awk的基本用法

标签:

原文地址:http://www.cnblogs.com/benevolencedoctor/p/5181203.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!