awk的基本用法

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}' 就是把某一列制空

6. awk 打印奇数行和偶数行

awk 'NR%2' b.log 打印奇数行

awk '!(NR%2)' b.log 打印偶数行

7. awk多个分隔符进行摘取列

cat file|awk -F[//\ ] '$9 ~/500/ {print $3,$5,$6,$8}' 分隔符分别为/ / 空格






转载出处https://www.cnblogs.com/benevolencedoctor/p/5181203.html

猜你喜欢

转载自blog.csdn.net/jinyuxiaoqiang/article/details/80437103