设为首页 收藏本站
查看: 952|回复: 0

Linux之shell脚本(1)

[复制链接]

尚未签到

发表于 2018-8-24 12:28:31 | 显示全部楼层 |阅读模式
Linux之shell脚本(1)
  一、 正则表达式:
  
  正则表达式(或称Regular Expression,简称RE)就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。
  该模式描述在查找文字主体时待匹配的一个或多个字符串。
  正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。简单的说,正则表示式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为, 正则表示式通过一些特殊符号的辅助,可以让使用者轻易的达到搜寻/删除/取代某特定字符串的处理程序。vim、grep、find、awk、sed等命令都支持正则表达式。
  1.常用正则表达式:
  1) . 代表任意单个字符;
  例如:检索test.txt文本中匹配s字符的。
DSC0000.png

  2) ^代表行的开始;
DSC0001.png

  3) $ 代表行的结束;
  例如;检索test.txt文本中以.结束的。(\.表示把特殊字符.转为普通字符)
DSC0002.png

  4)[...]表示匹配括号中的字符之一
  例如:检索test.txt文本中匹配小写字母a到z之间的。
DSC0003.png

  注意:
  [abc]表示匹配单个字符a或b或c
  [123]表示匹配单个字符1或2或3
  [A-Z]表示匹配大写字母A-Z之间一个
  [^a]表示取反,匹配除去小写字母a的。
  5)* 表示前导字符出现0次或任意多次;
  例如:检索test.txt文本中出现0次或多次T的。
DSC0004.png

  6) \? 表示前导字符出现0或1次;
  例如:检索test.txt文本中出现0或1次e的。
DSC0005.png

  7)\+  表示前导字符出现1次或多次。
  例如:检索test.txt文本中出现1或多次nn的。
DSC0006.png

  8)\{n,m\} 表示前导字符出现n至m次;
  n/m为整数,并且m>n;
  其他形式:
  \{n\}连续的n个前导字符;
  \{n,\}连续的至少n个前导字符;
  例如:检索test.txt文本中出现2至4个n的。
DSC0007.png

  9)\ 表示转义其后的单个特殊字符,使其成为普通字符;
  例如:检索test.txt文本中含有.的。
DSC0008.png

  10) | 表示或;
  例如:检索test.txt文本中含有a或b的。
DSC0009.png

  11) [] ():将部分内容合成一个单位组;
  例如:检索test.txt文件中含有Tae或The的。
DSC00010.png

  二、grep命令的用法
  grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.
  1)-A 数字:列出符合行之外,并且列出后几行;
  例如:列出test.txt文本中Tom行与后俩行。
DSC00011.png

  2)-B 数字:列出符合行之外,并且列出前几行;
  例如:列出test.txt文本中Tom行与前俩行。
DSC00012.png

  3)-C 数字(如不加数字,默认为2):列出符合行之外,并且列出前后几行;
  例如:列出test.txt文本中Tom行与前后俩行。
DSC00013.png

  4)-c : --count(若再加上-v参数则显示不符合的总行数):不显示符合的行,只显示符合的总行数;
  例如:列出test.txt文本中含有Tom的行数;
  列出test.txt文本中不含有Tom的行数。
DSC00014.png

  5)-i忽略大小写
  例如:列出test.txt文本中含有tom(大小写)的行。
DSC00015.png

  6)-n :再匹配的行前面打印行号
  例如:列出test.txt文本中含有tom(大小写)的行,并且打印出行号。
DSC00016.png

  7)-v :反检索,显示不匹配的行;
  例如:列出test.txt文本中不含有tom的行。
DSC00017.png

  8)精确匹配:再抽取的字符串后加上  \>
  例如:精确列出test.txt文本中含有30的行。
DSC00018.png

  8)-s :不显示不存在或不匹配文本的错误信息;(如文件不存在)
  例如:bb.txt文件不存在,检索时候提示搜索不到的错误信息,
  如果不要错误信息提示,则加上-s
DSC00019.png

  三、sed命令的用法
  sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
  sed的基本命令
  1)s :替换
  例如:把test.txt中The替换成aa,输出到bb.txt文件中。
  sed 替换命令:
  /../../分隔符(可以用其他符合代替)
  The 搜索的字符串
  aa替换的字符串
    搜索的文件
  bb.txt   输出到的文件
DSC00020.png

  2) & :表示匹配的字符串
  注意:
  sed 默认只替换搜索字符串的第一次出现 , 利用 /g 可以替换搜索字符串所有
  如果需要对同一文件或行作多次修改,可以使用 "-e" 选项
  例如:给test.txt中The替换成加一个(),输出到cc.txt文件中。
DSC00021.png

  3) d :删除行
  例如:将passwd内容显示并打印行号,同时删除2到5行。
  注意:
  nl命令在linux系统中用来计算文件中行号。nl 可以将输出的文件内容自动的加上行号。
DSC00022.png

  4)增加行a(在指定的行后新增)i(在指定的行前新增)
  例如:将test.txt内容显示并打印行号,同时在第二行后新增hello。
DSC00023.png

  例如:将test.txt内容显示并打印行号,同时在第二行前新增hello。
DSC00024.png

  例如:如果要同时新增多行,则每行之间要用反斜杠\来进行的添加。
DSC00025.png

  5)c :取代行
  例如:将test.txt内容显示并打印行号,同时取代2到5行间内容为BBBBBBB。
DSC00026.png

  6)p : 打印
  例如:仅列出test.txt文本中的第5到7行内容。
DSC00027.png

  7)-i:sed 的-i选项可以直接修改文件中的内容
  例如:将test.tst文本中的第二行修改为kkkk
DSC00028.png

  8)扩展
  调用sed的方式:
  在命令行键入命令
  将sed命令插入脚本文件,然后调用sed
  将sed命令插入脚本文件,并使sed脚本可执行。
  
  使用sed命令行的格式:
  sed [选项] sed命令 输入文件。
  记住在命令行使用sed命令时,实际命令要加单引号。
  sed也允许加双引号。
  使用sed脚本文件格式:
  sed [选项] -f sed脚本文件  输入文件
  要使用第一行具有sed命令解释器的sed脚本文件的格式:
  sed脚本文件 [选项]  输入文件
  例如:使用sed脚本将jjjjj添加到test.txt文本中的第三行,将lllll添加到test.txt文本中的第四行。
DSC00029.png

  给sed脚本权限,运行脚本
DSC00030.png



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-555971-1-1.html 上篇帖子: shell脚 本编程 下篇帖子: shell 常规数组&关联数组
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表