awk

1、AWK格式

awk 'pattern' filename #例:awk '/root/' 1.txt
awk {action}' filename #例:awk '{print $1}' 1.txt
awk 'pattern{action}' filename #例:awk '/root/{print $1}' 1.txt

2、AWK输出

date|awk '{print"Month:"$2"
 Year:"$6}' #格式化输出
awk '/root/' 1.txt #输出带有root的行
awk '{print $1}' 1.txt #输出每一行的第一个字段
awk '/root/{print "One:"$1}' 1.txt #输出包含root的行的第一个字段

3、AWK自定义分隔符

awk -F ':' '{print $1}' 1.txt #输出用:分割的第一个字段
awk 'BEGIN{FS=":"}{print $1}' 1.txt #第二种指定分隔符的方法

4、AWK匹配

awk '$1~/[Rr]oot/' 1.txt #输出第一个字段包含Root或root的行
awk '$3<5000' 1.txt #输出第三个字段小于5000的行

5、AWK关系运算

awk '$3==123' 1.txt #输出第三个字段等于123的行
awk '$3>5000{print $1}' 1.txt #输出第三个字段大于5000的行的第一个字段
awk 'sum=$1+$2{print sum}' 1.txt #输出每一行第一个字段加上第二个字段的和

6、AWK内置变量

FS 域的分隔符
NF 每条记录的域的个数
NR 已读的记录书

7、AWK中BEGIN和END

awk 'BEGIN{sum=0}{sum=sum+$5}END{pring sum}' 1.txt    #输出所有行第五个字段相加的和

8、AWK输出重定向

awk '{print $1>"2.txt"}' 1.txt    #把1.txt里面的第一个字段的值,写入到2.txt;里

9、AWK中if的用法

awk '{if($1>50)print $1"Too big";else print "Range is ok"}' 1.txt    #判断第一个字段是否大于50

10、AWK循环

awk '{i=1;while (i<NF){print $1;i++}}' 1.txt
awk 'for(i=1;i<NF;i++) print $1' 1.txt

11、AWK函数

sub函数:字符串替换,只替换每条记录中出现的第一个字符串
sub(正则表达式,替换串) #例:awk '{sub(/root/,"host");print}' 1.txt
sub(正则表达式,替换串,目标串) #例:awk '{sub(/root/,"host",$5);print}' 1.txt

gsub函数:字符串全局替换
gsub(正则表达式,替换串) #例:awk '{gsub(/root/,"host");print}' 1.txt
gsub(正则表达式,替换串,目标串) #例:awk '{gsub(/root/,"host",$5);print}' 1.txt

length函数:返回字符串的长度
length("字符串")  #例:awk '{print length(“hello”)}' 1.txt

substr函数:取字符串 #例:awk '{print substr("hello motor",1,5)}' file

12、脚本案例

#!/bin/bash
while read line
do
  name='echo $line| awk -F'=' '{print $1}''
  value='echo $line|awk -F'=' '{print $2}''
  echo "name is $name,value is $value"
done<config.bash
#!/bin/bash
while true
do
  fcount=$(ls -l|grep log$|wc -l)
  if [ $fcount -gt 9 ]
  then
    dfile=$(ls -l|grep log$|awk 'NR == 1{print $9}')
    echo "delete file:$dfile"
    rm -rf $dfile
  else
    echo "file count<9"
  fi
done
#! /bin/sh
#ll tomcat_zt
pidlist='ps -ef |grep obs-new|grep -v "grep"|grep -v "00:00:00" |awk '{print $2}''
echo "tomcat_obs list:$pidlist"
#echo "$pidlist"
'kill -9 $pidlist'
cd /home/local/tomcat/apache-tomcat-obs-new/work
'rm -rf Catalina'
cd /home/local/tomcat/apache-tomcat-obs-new/bin
sh startup.sh ;tail -f ../logs/catalina.out
原文地址:https://www.cnblogs.com/lilyo/p/11912666.html