shell编程1

一、shell基础正则表达式

  1.正则表达式和通配符

    正则表达式是用来在文件中匹配符合条件的字符串,正则式包含匹配。(grep awk sed)

    通配符是用来匹配符合条件的文件名,通配符是完全匹配。(* [] ? )通配符可以在正则表达式中使用但是正则表达式不能再shell命令中使用。

  2.基础正则表达式

  

  grep参数:

  -n  :显示行号
  -o  :只显示匹配的内容
  -q  :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容

  -l  :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root' /etc 
  -A  :如果匹配成功,则将匹配行及其后n行一起打印出来
  -B  :如果匹配成功,则将匹配行及其前n行一起打印出来
  -C  :如果匹配成功,则将匹配行及其前后n行一起打印出来
  --color
  -c  :如果匹配成功,则将匹配到的行数打印出来
  -E  :等于egrep,扩展
  -i  :忽略大小写

  -v  :取反,不匹配
  -w:匹配单词

  eg:grep  "a*" /ect/passwd(匹配所有内容,包括空行)      grep "aa*" /etc/passwd (匹配至少包含一个a的行)

    grep "x.n" /etc/passwd(匹配x和n之间的任意一个字符)  grep “x.*n” (匹配x和n之间任意多个字符)

    grep “.*”  /etc/passwd (匹配所有字符和shell通配符中的*一样)      grep -n “^$" /etc/passwd (匹配空白行)

    grep "\.$" /etc/passwd(匹配以.结尾的行)

二、cut字符截取命令

  1.字符提取命令,默认识别已tab键作为分隔符。

  2.cut [选项] 文件名 

      -f 行号 :提取第几行

      -d 分隔符  :以指定分隔符分割列

三、printf命令

  1.printf命令详解

  2.printf和print命令

  

四、awk命令

  1、命令格式

eg:

五、sed命令

  sed [选项]  '[动作]'  文件名

  选项:

      -n  只把经过sed命令处理的行输出到屏幕上,默认是全部输出。

      -e  允许对输出数据应用多条sed命令编辑,多条命令之间用;分割开。

      -i 用sed命令直接修改文件的结果,而不是屏幕输出。

  动作:

     na \  追加,在当前行后添加一行或多行,添加多行时每行末尾需要用\进行隔开代表数据未完结,最后一行末尾不用添加\。(注:n为行号)

       ni \   插入,在当前行前插入一行或多行数据,与na \类似。

     nc \   行替换,用c后面的字符串替换原数据行,替换多行时除最后一行外,每行末尾都需要用\代表数据没完结

     ns  字符替换,用一个字符替换另一个字符,格式为ns/旧字符/新字符/g

     nd   删除指定的行

np   打印,输出指定的行

   补充:

  egrep:
  egrep = grep -E 可以使用基本的正则表达外, 还可以用扩展表达式. 注意区别.
  扩展表达式:
  + 匹配一个或者多个先前的字符, 至少一个先前字符.
  ? 匹配0个或者多个先前字符.
  a|b|c 匹配a或b或c
  () 字符组, 如: love(able|ers) 匹配loveable或lovers.
  (..)(..)\1\2 模板匹配. \1代表前面第一个模板, \2代第二个括弧里面的模板.
  x{m,n} =x\{m,n\} x的字符数量在m到n个之间.
  egrep '^+' file   以一个或者多个空格开头的行.
  grep '^*' file   同上
  egrep '(TOM|DAN) SAVAGE' file 包含 TOM SAVAGE 和DAN SAVAGE的行.
  egrep '(ab)+' file 包含至少一个ab的行.
  egrep 'x[0-9]?' file 包含x或者x后面跟着0个或者多个数字的行.
  egrep 'fun\.$' * 所有文件里面以fun.结尾的行.
  egrep '[A-Z]+' file 至少包含一个大写字母的行.
  egrep '[0-9]' file 至少一个数字的行.
  egrep '[A-Z]...[0-9]' file 有五个字符, 第一个式大写, 最后一个是数字的行.
  egrep '[tT]est' file 包含单词test或Test的行.
  egrep 'ken sun' file 包含ken sun的行.
  egrep -v 'marry' file 不包含marry的行.
  egrep -i 'sam' file 不考虑sam的大小写,含有sam的行.
  egrep -l "dear ken" * 包含dear ken的所有文件的清单.
  egrep -n tom file 包含tom的行, 每行前面追加行号.
  egrep -s "$name" file 找到变量名$name的, 不打印而是显示退出状态. 0表示找到. 1表示表达式没找到符合要求的, 2表示文件没找到.

  sort命令

    sort [选项]  文件名

    选项  -f 忽略大小写

        -n 以数值型进行排序,默认是字符串型

        -r 反向排序

        -t 指定分隔符

        -k n[,m]  以指定的分隔符字段进行排序,从第n段到第m段排序 默认是到结尾

  eg:sort -n -t":" -kn,m /etc/passwd

        

shell编程1的更多相关文章

  1. Linux学习笔记(17) Shell编程之基础

    1. 正则表达式 (1) 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式:通配符用来匹配符合条件的文件名,通配符是完全匹配.ls.find ...

  2. shell编程:定义简单标准命令集

    shell是用户操作接口的意思,操作系统运行起来后都会给用户提供一个操作界面,这个界面就叫shell,用户可以通过shell来调用操作系统内部的复杂实现,而shell编程就是在shell层次上进行编程 ...

  3. Linux Shell编程入门

    从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...

  4. Shell编程菜鸟基础入门笔记

    Shell编程基础入门     1.shell格式:例 shell脚本开发习惯 1.指定解释器 #!/bin/bash 2.脚本开头加版权等信息如:#DATE:时间,#author(作者)#mail: ...

  5. Linux_10------Linux之shell编程------变量

    .-9 vim num.sh #! /bin/bash num1=$1 num2=$2 sum=$(($num1+$num2)) #变量sum是num1和num2的综合 echo $sum 执行 ./ ...

  6. 需要交互的shell编程——EOF(转载)

    在shell编程中,”EOF“通常与”<<“结合使用,“<<EOF“表示后续的输入作为子命令或子shell的输入,直到遇到”EOF“, 再次返回到主调shell,可将其理解为分 ...

  7. ****CodeIgniter使用cli模式运行,把php作为shell编程

    shell简介 在计算机科学中,Shell俗称壳(用来区别于核).而我们常说的shell简单理解就是一个命令行界面,它使得用户能与操作系统的内核进行交互操作. 常见的shell环境有:MS-DOS.B ...

  8. Shell 编程基础之变量和环境变量

    一.变量赋值和引用 Shell 编程中,使用变量无需事先声明,同时变量的命名不惜遵循如下规则: 首个字符必须为字母(a-z,A-Z)或者_ 变量名中间不能有空格,可以使用_连接 不能使用其他表达符号 ...

  9. Linux Shell编程基础

    在学习Linux BASH Shell编程的过程中,发现由于不经常用,所以很多东西很容易忘记,所以写篇文章来记录一下 ls   显示当前路径下的文件,常用的有 -l 显示长格式  -a 显示所有包括隐 ...

  10. centos 下建用户 shell编程

    useradd 用户名 passwd 用户名 cat /etc/passwd  查看用户信息 删除用户 userdel -r   加一个 -r 表示把用户及用户的主目录都删除 su  切换用户 sud ...

随机推荐

  1. CSS——如何清除浮动

    众所周知,平时在写HTML代码时,难免少不了使用Float样式,这样一来,假使您没有清除浮动,那么有浮动元素的父元素容器将元素将无法自动撑开.换句简单好理解的话来说,假如你在写CODE时,其中div. ...

  2. redux VS mobx (装饰器配合使用)

    前言:redux和mobx都是状态管理器,避免父级到子级再到子子级嵌套单向数据流,可以逻辑清晰的管理更新共享数据.(刷新页面redux储蓄数据即消失) 配置使用装饰器(使用高阶函数包装你的组件): n ...

  3. 自定义 alert 弹窗

    1.css样式 li-alert.css @-webkit-keyframes opacity { 0% { opacity: 0; /*初始状态 透明度为0*/ } 50% { opacity: 0 ...

  4. linux程序设计——取消一个线程(第十二章)

    12.7    取消一个线程 有时,想让一个线程能够要求还有一个线程终止,就像给它发送一个信号一样. 线程有方法能够做到这一点,与与信号处理一样.线程能够被要求终止时改变其行为. pthread_ca ...

  5. Servlet的API(二)

    web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象和代表响应的response对象.request和response对象既然代表请求和响应,那我们获取 ...

  6. 开源项目UIL(UNIVERSAL-IMAGE-LOADER)

    1 http://www.cnblogs.com/osmondy/p/3266023.html 2 待续

  7. 在Excel2003中给定区域填充随机数?

    1.选中一个单元格,输入“=RAND()*40+60”,点CTRL+ENTER键,即可完成公式填充. 2.鼠标悬停单元格边框右下角,出现“+”符号,左键拉动实现格式复制,从而填充整个区域随机数. ★题 ...

  8. appium----基本概念

    转:http://www.cnblogs.com/nbkhic/p/3803830.html Client/Server Architecture appium的核心其实是一个暴露了一系列REST A ...

  9. CentOS LVS安装配置

    一般2.6.10以上内核版本都已经自带了ipvsadm,故不需要安装. Ipvs 1.25编译 ipvsadm-1.25编译不过 去掉netlink库的依赖:去掉libipvs/Makefile的CF ...

  10. Verilog 浮点数运算模块

    算法中常常会到浮点数运算,而浮点数的处理常常是Verilog初学中常常遇到的问题.以下将就一个简单的例子说明Verilog中浮点数运算处理. 在JPEG图像压缩时遇到色彩空间变换的问题,将YCbCr转 ...