awk example

 0 awk is often used like below:

a=OFC30L40.0

awk -F [A-Z]  '{print $1}'

awk use to get column ;

 

awk only use to regular express to match  judge.

use embedded function to replace , such as : gsubstr


1 这个程序的亮点,是shell中用awk正则的条件判断
ls -ltr |while read line
do
filename=`echo $line|nawk '{print $9}'`
corename=`echo $filename| nawk '/^core/ {print}'`
if [ "$corename" != "" ]
then
echo $corename
file $corename
fi
done


assignment:

it different from shell.

shell is right

a=10

c=$a

awk is error

a=OFC30L40.0

echo $a |nawk '{ if (/OFC([0-9]+)L([0-9]+).0/) { b=$a;exit 10;} else { exit 11;} }'


  ls  -l |nawk '{if($3 ~ /^[0-9]*$/){print $0}}'
 for x in `ls`; do name=`ls -ld $x | nawk -F" " '{print $3}'`; id $name > /dev/null 2>&1; if [ $? -ne 0 ]; then ls -ld $x; fi; done


4

awk 可以接文本or 管道
如e=`echo $c|nawk -F "." '{print $4}'`
nawk -F "." '{print $4}' filename-----------------------------------nawk 基本用法,长的就是这样
不能接字符串

 nawk -F "." '{print $4}' string 不行
 
从理论上,字符串不属于标准输入输出吗。所以awk不能接


5 RS, NR

p=$( echo "$LoadName" | nawk -v RS="." 'END{print NR-1}' )\
LoadName=OFC33L40.0
RS表示分行。不是分割字段。NR表示行号
以"."分割OFC33L40.0变成两个record. 一个是OFC33L40一个是0.NR等于2. print 2-1 即1

-v表示变量定义,在awk中任何变量都要用它定义

solaris 用nawk不能用awk


6

awk '{while(getline line < "1.txt"){ print $0 OFS line; $0 = "  "}; close("1.txt")}' 2.txt

7

ps -ef | grep center | grep -v grep | awk '{ print "kill -9 " $2 '}

:it is common example for two file merge lines--NR,FNR

  1. [root@localhost ~]# cat i
  2. tb|cname
  3. tb|objldn
  4. tb|date
  5. tb_q|cname
  6. tb_q|objldn
  7. [root@localhost ~]# awk 'BEGIN{FS=OFS="|"}NR==FNR{a[$1]++;next}{$3=$2;$2=a[$1]}1' i i
  8. tb|3|cname
  9. tb|3|objldn
  10. tb|3|date
  11. tb_q|2|cname
  12. tb_q|2|objldn
  13. [root@localhost ~]#

awk -F usage

awk goal is for get column

the most usage is -F

it split string or character to get

don;t need use "|" to choose , only enum

such as : a-z and ". "

a=OFC30L40.0

echo $a | awk -F '[A-Z.]+' '{print $3}'
-------

awk -F.  'NF>1{if(NR>1)print "";printf $0;next}{printf " "$0}END{print ""}'  urfile

回复 18# todayhero

111.121.121.211
153
132
223.222.132.216
123
203
333.353.333.323
139
222

结合楼主的文件内容就好理解了, 

-F.   'NF>1{if(NR>1)print "";  #只在NF>1  和 NR >1 两个条件同时满足的情况下, 换行.  其它情况下不换行.

第1 行:   111.121.121.211    #条件不符, 不换行
第2  3 行:  条件都不符,不换行.  这时累计输出结果为:  
111.121.121.211  153  132

第4行:   223.222.132.216    # NF>1  和 NR >1 两个条件同时满足, 换行
第5 6 行:  条件都不符,不换行.  这时累计输出结果为:
111.121.121.211  153  132
223.222.132.216  123  203

依此类推.....

========

example 2:

input :

 Peer (2) advanced to state (7) at (6).
^?22 2013-03-17 20:57:41.506733 coolnjmcl080 COOLSIGproc 7771[17445] M3UA remote Peer (2) advanced to state (8) at (6)

awk -F 'COOLSIGproc'  '{print RT,$2}' 

good use -F to choose key



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值