shell编程笔记二

深入讨论awk
  条件操作符
    <
    >=
    <=
    ==
    !=
    ~
    !~
  逻辑操作符
    &&   and
    ||   or
    !    not
    awk '{if ($4~/^/[17//May//2006/) print $0}' log.txt |wc -l
    awk '{if ($1!~/^218/.98/.157/.105/) print $0} log.txt' |wc -l
  awk的内置变量
    ARGC    //命令行参数个数
    ARGV    //命令行参数排列,数组使用形式ARGV[]
    ENVIRON  //支持队列中环境变量的使用,在awk中取得环境变量的值,使用形式ENVIRON["变量"]
    FILENAME  //awk浏览的文件名
    FNR    //浏览文件的记录数
    FS     //设置输入域分隔符,等价于命令行 -F选项
    NF     //浏览记录的域个数
    NR     //已经读出的记录数
    OFS    //输出域分隔符
    ORS    //输出记录分隔符
    RS     //控制记录分隔符
      awk -F '+' '{print NR,NF,ENVIRON["USER"],ARGC,ARGV[0]$0}' hello   //输出结果如下
         1 2 root 2 awk lskdfsdfi + sdfasdfsdf
         2 2 root 2 awk adf +sdfasdf
         3 2 root 2 awk asdf+safsdf
         4 2 root 2 awk as+asdfasdf
         5 4 root 2 awk df+sfasdf+asfas+afsadfs
  字符串函数
    gsub(r,s)    //在整个$0中用s替代r
    gsub(r,s,t)  //在整个t中用s替代r
    index(s,t)   //返回s中字符串t的第一次出现位置
    length(s)    //返回s长度
    match(s,r)   //测试s是否包含匹配r的字符串
    split(s,a,fs)  //用fs上将s分成序列a
    sprint(fmt,exp)  //返回经fmt格式化后的exp
    sub(r,s)     //用$0中最左边最长的子串替代s
    substr(s,p)  //返回字符串s中从p开始的后部分
    substr(s,p,n)   //返回字符串s中从p开始长度为n的后缀部分
      awk -F '#' '{if (gsub("s","S")) print $0}' hello.txt  //查找hello.txt文档用大写的S替换小写的s
      awk -F '#' '{if (gsub("s","S",$2)) print $0}' hello.txt  //查找每一行的第二列用S替换s
      awk -F '#' '{print index($2,"e")}' text.txt   //查找第二个域中每条记录内e第一次出现的位置
  printf修饰符
    %c     //ASCⅡ字符
    %d     //整数
    %f     //浮点数
    %e     //浮点数,以科学技术法表示
    %g     //新行
    %o     //八进制数
    %s     //字符串
    %x     //十六进制数
      awk -F '#' '{printf "%c",$1}' hello.txt
      awk -F '#' '{printf "%c/t%d/n",$1,$2}' hello.txt
  awk数组
    awk 'BEGIN{print split("as#bs#123",array,"#")}' //创建包含3个元素的数组arry,以#号分隔
    awk 'BEGIN{print split("as#bs#123",array,"#");print array[1]}'  //打印数组中的第1个元素
  输入重定向
    file
              被重定向的文档
    file
  信号的捕捉   //示例见advshellscript2.sh
    trap "name" signal(s)   //name通常为一个函数,用来处理捕捉到的信号;signal为捕捉到的一个或多个信号
    trap "hello" 2     //捕捉编号为2的信号,并把信号发送给hello函数进行处理
  向messages发送信息
    logger -p 1 -i "hi nihao"          //向messages发送等级为1,内容为"hi nihao"的记录
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值