Chinaunix首页 | 论坛 | 博客
  • 博客访问: 67128
  • 博文数量: 17
  • 博客积分: 673
  • 博客等级: 中士
  • 技术积分: 150
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-17 16:48
文章分类

全部博文(17)

文章存档

2012年(5)

2011年(12)

分类: LINUX

2012-08-18 20:58:22

<==============================================================================>=============
 awk 'ARGIND!=3{a[$0]++}ARGIND==3&&a[$0]>=2' A B C (挺酷的。。。)
 更酷的 awk '++a[$0]==ARGC' file* (08-11 09:04)    

<==============================================================================>=============
 awk 'NR%12==1{close(p".txt");++p}{print > p".txt"}' 
 awk拆分文件注意及时close 

<==============================================================================>=============
  awk '{system ("date +%F -d \""$1"\"");}' ufile 
  传用qq包起来的参数给system,类似“AA BB”

<==============================================================================>=============
  #将b.dat中的指定的域替换为a.dat中的内容 
    awk 'FILENAME=="a.dat"{a[FNR]=$0}FILENAME=="b.dat"{$3=a[FNR];print}' a.dat b.dat
    awk 'NR==FNR{a[NR]=$1}NR>FNR{if (FNR in a) $3=a[FNR];print}' a.dat b.dat  
    awk 'NR==FNR{a[NR]=$0; var=FNR} NR>FNR{ print $1,$2,a[NR-var],$4}' a.dat b.dat # 我写的,还是不大好
    

<==============================================================================>=============     #从"new.txt"中找出在"old.txt"中不存在的record   
    awk 'FILENAME=="old.txt" {a[$2]=$0} FILENAME=="new.txt" { if (!($2 in a)) print $0 }' old.txt new.txt  
     
    awk -F';' 'FILENAME=="CaseId.log" {a[$1]=1} FILENAME=="XScaselist.log" { if (($1 in a)) {print $0} }' CaseId.log XScaselist.log 


<==============================================================================>=============      
    #找出modelname和作者
    awk -F';' '{ modelPath=$(NF-3);  modelName=gensub(/.*\//, "", "g", modelPath); print modelName, $(NF-1) }' KCG.TracingTable
    #处理NoExistentErr.txt按作者分类
    awk 'BEGIN{ RS="<==="} { if( ( $0 ~ /DX\>/) ) {print RS,$0}}' NoExistentErr.txt
    

<==============================================================================>=============  
    #CVK review 的Header of generated code is correct的检查
    ls *.* | xargs awk  '/\/* \$\*\*/,/\*\*\$ \*\// {a[FILENAME]++; if( a[FILENAME] < 2 ){printf "\n%s\n", FILENAME }; printf "%s\n",  $0}'


<==============================================================================>=============  
  #某个模式和它的前几行,这里是之前的第2行
  awk '/vPattern/&&NR>2{print a[NR%2]"\n"$0}{a[NR%2]=$0}'  
  
  #awk中的变量a先取值,然后把这个结果当作正则来处理了,而非用//的时候把变量名当作正则来处理
  awk -v a='a.*' '{sub(a,"");print}' xx
  
  #awk 单引号的特殊性
  awk -v hq="'" '{print $1,$2, hq $3 hq}' 
  
<==============================================================================>=============  
  
  ###用awk 有 以下几种方法去调用变量:
  1.  awk –v "a=$var1" –v "b=$var2" '{print a,b}' yourfile
  注意, 对每一个变量加一个 –v 作传递.
  
  2.  awk '{print a, b}' a=$var1 b=$var2 yourfile
  注意, 变量位置要在 file 名之前, 否则就不能调用. 例如:
  awk '{print a, b}' a=111 file1 b=222 file2 
  file1 不能调用 b=222.
  在BEGIN{}中是不能调用这些的variable. 除了-v.
  
  3.  awk ’{print “’”$LOGNAME”’”}’ yourfile
  “  ’  “  $LOGNAME  “  ’  “
  

<==============================================================================>=============  
  #RT的用法
  gawk ’BEGIN { RS = "\n|( *[[:upper:]]+ *)" }{ print "Record =", $0, "and RT =", RT }’ 
  
  比较 file1的1-4字符 和 file2的2-5 字符,如果相同,将file2 的第二列 与 file1 合并 
  awk  'NR==FNR{a[substr($1,2,5)]=$2} NR>FNR&&a[b=substr($1,1,4)]{print $0, a[b]}' file2 file1


<==============================================================================>=============  
  # gensub 处理对齐
  awk '{ if ( ( length($0) > 133 ) ) {if ($0 ~ /+---+/){ print gensub(/\-\-\-\+/, "+", 2)}else{ print  gensub(/    \|/, " \|", 1) }} else { print $0 } }' MTC_CruiseControl_RecordFile_1-1.txt

  #统计文件中冒号的数量
  awk -v RS=: 'END{print NR-1}' urfile
阅读(1883) | 评论(0) | 转发(0) |
0

上一篇:linux misc

下一篇:vi tips

给主人留下些什么吧!~~