_N_了吧唧的_ 发表于 2018-8-26 13:39:32

shell脚本及正则表达式

  shell脚本的编写及正则表达式:
  一、shell脚本的基本:
  1.首先shell脚本到底是什么?
  1)纯文本文档--文件中所存储的数据都是以字符为单位进行存储的;
  2)根据用户的需求来解决用户问题的大量命令的组合体
  3)“执行幂等性”——任何命令多次执行的结果是一致的
  注意:很多命令都不具备“执行幂等性”,在shell脚本中就需要大量的程序逻辑来判断某个命令是否满足其运行条件,以避免在运行过程中出现严重错误。
  2.脚本的基本代码内容:
  1)首先我们可以利用文本编辑工具来编写shell脚本:
  例如:Nano 、vi、Vim、emacs、pico
  在这里我们推荐使用Vim,因为它具有语法着色,自动缩进等特性
  脚本的命令方式:可以使用.sh的文件名为后缀;在低版本的Vim编辑器,只能根据.sh的后缀命令来识别是否为shell脚本,高版本的Vim编辑器,则无需过多的文件后缀名的问题;
  2)shebang:首行必须是shebang,解释器路径,必须占据就对行首:在执行时,启动相应的解释器以解释脚本内诸多的命令
  因为我们使用的shell为bash
  #! /bin/bash
  3) 在shell脚本中,除了shebang之外,所有以#开头的行都为注释行,解释器都会忽略这样的行的内容
  例如:
  # author:秦耀东
  # type:基础练习
  ...
  4)空白行:解释器会忽略脚本中所有的空白行;
  5)大量的关键字和命令:if、else、then、do、while、for、...
  6) bash中所有的特殊想字符
  /// 注意:shell脚本一旦运行,是在当前的shell中根据shebang的指示,开启一个解释器(子shell)解释执行代码内容,shell脚本的内容是在一个子shell进程中实现的;
  3.脚本的运行方法:
  1)为脚本文件赋予执行权限,直接运行此文件:
  ~ ]#chmod+x /PATH/TO/SCRIPT_FILE
  注意:如果在执行脚本时,只写脚本的名不写路径的话,必须确保PATH变量中保存的路径下,能够找到该文件;
  2)直接使用解释器运行脚本,讲脚本作为解释器命令的参数;
  bash /PATH/TO/SCRIPT_FILE
  bash -x /PATH/TO/SCRIPT_FILE(将脚本的运行过程展示出来,一般用于脚本排错)
  bash -n /PATH/TO/SCRIPT_FILE(对脚本进行语法排错,如果存在语法错误,则 bash会给予提示,针对于这类错误提示,,需要我们自行判断错误的发生位置)
  二、正则表达式:
  在学习正则表达式之前我们先来学习文本处理工具:
  文本处理三剑客:
  grep系:grep、egrep、fgrep,文本搜索工具,基于"PATTERN"对于给定的文本进行模糊搜索,grep系默认工作于贪婪模式下;
  sed:Stream EDitor,流编辑器,行编辑器,文本编辑工具;
  awk:gawk——GNU awk,文本格式化工具,文本报告生成器,文本处理的编程语言;
  1.grep系:grepegrepfgrep
  1:grep:默认仅支持基本正则表达式
  全称为Global search Regular Expression and Print out the line.利用正则表达式进行全局搜索并将匹配的行显示出来;
  1)grep PATTERN
  ////这里我们要介绍一下PATTERN,PATTERN是一种过滤条件,是由正则表达式元字符以及没有特殊含义的文本字符组成;
  正则表达式的元字符会被正则表达式引擎解释为特殊含义;
  正则表达式的文本字符是指只具备字符表面含义的字符;
  常用选项为:
  -i, --ignore-case:忽略文本字符的大小写;
  -v, --invert-match:反向匹配;最终显示的结果是PATTERN不能成功匹配的行;
  -c, --count:计数,统计匹配PATTERN的所有的行数;
  -o, --only-matching:关闭贪婪模式,仅显示PATTERN能够匹配的内容;
  -q, --quiet, --silent:安静模式,不输出任何匹配结果;
  --color[=WHEN], --colour[=WHEN]:将匹配PATTERN的内容以特殊颜色高亮显示;
  --color=auto
  -E, --extended-regexp:扩展的正则表达式,grep -E相当于egrep;
  -F, --fixed-strings, --fixed-regexp:grep -F相当于fgrep
  -G, --basic-regexp:基本的正则表达式,egrep -G相当于grep
  -P, --perl-regexp:使用PCRE(Perl Common Regular Expression)引擎;
  -A NUM, --after-context=NUM:在显示匹配PATTERN的行的同时显示其后面的NUM行;
  -B NUM, --before-context=NUM:在显示匹配PATTERN的行的同时显示其前面的NUM行;
  -C NUM, -NUM, --context=NUM:在显示匹配PATTERN的行的同时显示其前后各NUM行;
  基本的正则表达式的元字符:
  1) 字符匹配;
  . :匹配任意单个字符;
  []:匹配指定范围内的任意单个字符;
  [^]:匹配指定范围以外的任意单个字符;
  下列所有的字符集都可以放置于[]之中用于匹配单个字符;
  [:lower:]:所有小写的单个字符
  [:upper:]:所有大写的字母
  [:alpha:]:所有字母字符
  [:digit:]:所有的十进制数字
  [:space:]:所有的空白字符
  [:alnum:]:表示所有的大小写字母以及十进制数字
  [:punct:]:所有的标点符号
  [:xdigit:]:所有的十六进制数字;
  a-z:所有的小写字母
  A-Z:所有的大写字母
  0-9:标识所有的十进制数字
  2)次数匹配
  *:其前面的字符可以出现任意次(0次,1次或多次);
  \?:其前面的字符可有可无(0次或1次);
  \+:其前面的字符至少出现一次(1次或多次);
  \{m\}:其前面的字符必须出现m次;
  \{m,n\}:其前面的字符至少出现m次,至多出现n次;(m
页: [1]
查看完整版本: shell脚本及正则表达式