Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1000565
  • 博文数量: 361
  • 博客积分: 25
  • 博客等级: 民兵
  • 技术积分: 1759
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-22 23:18
个人简介

学海无涯 个人blog lnmps.com 新站

文章分类

全部博文(361)

文章存档

2017年(1)

2015年(2)

2014年(55)

2013年(303)

分类: LINUX

2013-04-12 23:12:46


  1. $0存储整行,NF给出一行的字段数,NR是当前的行数:echo -e "1 2 3\n4 5 6"|awk 'NF<=3 {print $1 NR}'
  2. awk使用选项 -v 调用shell变量:a=1; b=2; echo -e "1\n2"|awk -v x=$a -v y=$b '$1==x {print $0 y}'  #每调用一次shell变量,都要加一个-v参数;
  3. awk把linux文本文件转化成windows文本文件,linux文本文件默认的换行符是 \n,windows文本文件默换行符为 \r\n : awk 'BEGIN{ORS="\r\n"} {print}' linux.txt>windows.txt
  4. 指定文件中的行:awk 'NR>=2&&NR<=10 {print}' file
  5. 对文本z指定列求和:awk 'BEGIN {sum=0};{sum += $1};END {print sum}' file
    对符合某些条件的行按列求和:awk 'BEGIN {sum=0}; /RE/ {sum += $2};END {print sum}'
  6. awk -v RS="" '{print $(NF)}' file,显示最后一行
    awk -v RS="" '{print $(NF-1)}' file,显示倒数第二行
    awk -v RS="" '{print $(NF-2)}' file,显示倒数第三行
  7. awk 去除第一行和最后一行
    awk 'NR>2{print p}{p=$0}' urfile
    第一行时, NR=1, 不执行print, p=第一行的内容
    第二行时, NR=2, 不执行print, p=第二行的内容
    第三行时, NR=3, 执行print p,此时p=第二行的内容, 即打印第二行, 然后p=第三行
    ............
    最后一行时, 执行print p, 打印倒数第二行, 然后p=最后一行
    也就是去除了第一行和最后一行

  8. awk   '{sub(/good/,"bad"); print $0}'只把每行的第一个good替换为bad

    awk   '{gsub(/good/,"bad"); print $0}'把每一行的所有good替换为bad

    sed  '/fell/ s/good/bad/g'

    awk   '{if(/fell/) gsub(/good/,"bad"); print $0 }'只在出现字符串fell字符串的前提下,将找到的行中的good替换为bad

    sed '/fell/ !s/good/bad/g'

    awk '{if(!/fell/) gsub(/good/,"bad"); print $0 }'只在不出现字符串fell字符串的前提下,将找到的行中的good替换为bad

     

    sed 's/good/bad/g;s/fell/bad/g;s/sun/bad/g'

     

    sed 's/good\|fell\|sun/bad/g'

     

    awk '{gsub(/good|fell|sun/,"bad") ; print $0}'不管是good、fell还是sun,一路替换为bad

阅读(488) | 评论(0) | 转发(0) |
0

上一篇:Bash快捷键

下一篇:Linux上的free命令详解

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