shell编程笔记二

原创 2006年05月20日 13:43:00
深入讨论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"的记录

Shell编程入门总结(二)

本文的主要内容: 1、流程控制:while/until 循环 2、流程控制:case 分支 3、流程控制:for 循环 4、位置参数...
  • CSDN_SXL
  • CSDN_SXL
  • 2016年04月29日 23:50
  • 3033

网络编程学习笔记整理(二)

摘录笔记 《TCP/IP高效编程 改善网络程序的44个技巧》socket的创建函数int socket (int domain,int type, int protocol)参数说明protocol需...
  • stecdeng
  • stecdeng
  • 2017年02月23日 14:47
  • 190

《GPU高性能编程CUDA实战》学习笔记(二)

第二章: 下载软件+配置cuda c代码环境 读过小王博客的都知道,小王现在使用的是同事电脑,暂时不需要安装cuda c编译环境,但是本书既然介绍到这里,那大家和我先大概了解一下吧。 2.1开发环...
  • w09103419
  • w09103419
  • 2016年09月09日 10:04
  • 1132

linux服务器开发二(系统编程)--线程相关

线程概念 什么是线程 LWP:Light Weight Process,轻量级的进程,本质仍是进程(在Linux环境下)。进程:独立地址空间,拥有PCB。线程:也有PCB,但没有独立的地址...
  • a815064247
  • a815064247
  • 2017年07月13日 20:18
  • 277

Shell脚本学习笔记

Shell学习笔记Shell学习笔记 简介 Shell教程入门 1shell脚本 2shell脚本实践 Shell变量 1使用变量 2只读变量 3删除变量 4变量类型 5shell字符串 6Shell...
  • binglumeng
  • binglumeng
  • 2016年11月18日 19:37
  • 1365

学习shell编程笔记(二)

Shell特殊变量 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 $# 传...
  • juan083
  • juan083
  • 2016年01月11日 23:19
  • 131

shell编程学习笔记二

流程控制 退出状态 有四种退出状态 最后命令退出状态$? 控制次序命令$$ || 处理shell脚步本退出或shell退出及相就退出状态或函数返回码 退出当前进程 ...
  • retacn_yue
  • retacn_yue
  • 2013年01月03日 18:26
  • 285

shell 编程学习笔记(二)

shell 编程学习笔记(二) shell 的结构: shell由一堆api函数和一些com接口组成, 但它们提供了不一样的功能, 通过api你可以访问shell的基本功能, 而通...
  • superliuxing
  • superliuxing
  • 2013年08月19日 04:31
  • 314

Shell编程练习题精选及答案

这里四道shell的面试题,学习shell的童鞋用来练手很不错。 前三道比较简单,都是对文件内容进行,按要求输出结果。用sed,awk,while-read以及here document和regex即...
  • liguo_jia
  • liguo_jia
  • 2015年01月15日 10:28
  • 2488

《深入理解jvm》笔记---第三章

《深入理解JVM》第三章笔记
  • nlznlz
  • nlznlz
  • 2016年09月17日 13:51
  • 340
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:shell编程笔记二
举报原因:
原因补充:

(最多只允许输入30个字)