VAR="The quick brown fox jumped over the lazy dog."
# 显示特殊域
echo $VAR|awk '{print $1,$2,$3,$4,$5,$6,$7,$8,$9}'
# 默认空格为分隔符
echo $VAR|awk '{print $0}'
# 指定分隔符
echo $VAR|awk -Fo '{print $1,$2,$3,$4,$5}'
# 简单模式匹配
awk '$2 == "ftp"{print $0}' /etc/hosts
awk '$1 ~ /^172|^127/ {print $0}' /etc/hosts
# 确定域的个数NF
echo $VAR|awk '{print NF}'
echo $VAR|awk '{print $NF}'
# 返回最后一个域值
echo $VAR|awk '{print $(NF-1)}'
# 给awk传值
TheCount=3
echo $VAR|awk -v counter=$TheCount '{print $counter}'
echo $VAR|awk '{print $counter}' counter=$TheCount
# 一定条件下使用awk
node=casper
awk -v NODE=$node '$2 == NODE {print $3}' /etc/hosts
# 显示域范围的主要方法
# printf 不换行打印;print换行打印
echo $VAR |awk '{ for (i=1;i<=NF;i++) {printf "%s ",$i}; print ""}'
end=6
echo $VAR |awk '{ for (i=1;i<='$end';i++) {printf "%s ",$i}; print ""}'
# 使用awk确定串的长度
# length 是一个保存当前行字符数的内部变量
echo $VAR |awk '{print length}'
# 使用expr确定字符串长度
expr length "$VAR"
# 使用awk显示字串的命令
# substr($3,2,3),第三个域值从第二位置之后的三个字符
echo $VAR |awk '{print substr($3,2,3)}'
# 使用expr显示字串
expr substr "$VAR" 12 3
# 使用sed简单的查找替换
# 以tab和换行代替空格
echo $VAR |sed -e 's/ /\t/g'
echo $VAR |sed -e 's/ /\n/g'
# 忽略空行和注释行
sed -e 's/#.*//g' ./ex_24|awk '{if(length !=0) print $0}'
# sed进行双查找和替换
# 存在quick的行进行he向she转化
echo $VAR |sed -e "/quick/s/he/she/g"
# sed过滤行
# 删除第一行
ps -ef |sed -e '1d'
# egrep查找多个串
egrep "desktop|mysql|ntp" /etc/passwd
# 查找进程表的一个清理方法
ps -ef |grep sshd |grep -v grep
ps -ef |grep [s]shd
# awk列求和
ls -l |awk '{total+=$2} END {print total}'
ls -l |awk '{total+=$2} END {print total/1024/1024}'
# 使用awk产生随机数
# srand()产生随机数0~1
echo |awk '{srand();print int(100*rand())}'
# shell中的随机数RANDOM:0~32767
echo $RANDOM
# 基于字符的域
# (.)一个字符 (.*)任意多个字符 (...)连续3个字符
echo $VAR
echo $VAR |sed 's/\(.*\)\(...\)$/\1/'
echo $VAR |sed 's/\(....\)\(.*\)\(...\)$/\1\3/'
# 转义字符
some_var="$.&/20\"
some_var=`echo $some_var |sed -e s/[.]/\\\\\\\./g`
some_var=`echo $some_var |sed -e s/[$]/\\\\\\\\$/g`
some_var=`echo $some_var |sed -e s/\&/\\\\\\\\\&/g`
some_var=`echo $some_var |sed -e s/[/]/\\\\\\\\\\\//g`
echo $some_var
# 使用awk返回模式匹配行之前的一行
# NR行记录数
echo ""
awk '/casper/{print pNR,p0}{pNR=NR;p0=$0}' /etc/hosts
echo ""
awk '/casper/{print ppNR,pp0,"\n",pNR,p0}{ppNR=pNR;pNR=NR;pp0=p0;p0=$0}' /etc/hosts
echo ""
awk '{for(j=0;j<='prevlines+1';j++){a[j]=a[j+1];a['prevlines+1']=$0}} /casper/{{print "Entry"}{for(k=0;k<'prevlines+1';k++){print a[k]}}}' /etc/hosts
echo ""
awk '{for(j=0;j<=4;j++){a[j]=a[j+1];a[4]=$0}} /casper/{{print "Entry"}{for(k=0;k<3;k++){print a[k]}}}' /etc/hosts
阅读(407) | 评论(0) | 转发(0) |