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

shell正则表达二

[复制链接]

尚未签到

发表于 2018-8-20 06:28:16 | 显示全部楼层 |阅读模式
  shell正则表达 二部分
DSC0000.png

  一、printf命令:
  1. 格式化输出。(print  format)
  2. 命令格式:
  printf'打印格式'实际内容
DSC0001.png

  1. 打印格式:
  1) \a(警告声音输出)
DSC0002.png

  1) \b(退格键)
DSC0003.png

  1) \n(输出新的一行)
DSC0004.png

  1) \r(帧处于行的开始,即enter键)
DSC0005.png

  \t(水平的table键)
DSC0006.png

  1) \v(垂直的table键)
DSC0007.png

  1) \xNN(x为ASCII码十六进制表示;NN为俩位数数字;可转换数字成为字符)
DSC0008.png

  1) %ns(n为数字;s代表string,即多少个字符)
DSC0009.png

  1) %ni(n为数字;i代表integer,即多少整数字符)
DSC00010.png

  1) %N.nf(n、N为数字;f代表floating浮点,小数字数即小数点)
DSC00011.png

  1. 例子:
  1) 以整数形式输出23并换行,以字符串形式输出hello并换行
DSC00012.png

  以2位整数形式输出23并换行,以7位字符串形式输出hello
   DSC00013.png
  案例文本
   DSC00014.png
  输出结果没有对齐
DSC00015.png

  如上,可设置字段格式使之对齐(字符串长度、整数及小数点长度)
  二、awk命令:
  三、awk 则比较倾向于一行当中分成数个字段来处理。
  .awk语言的最基本功能是在文件或字符串中基于指定规则来分解抽取信息,也可以基于指定的规则来输出数据。
  1) 命令行方式
  awk   [-F  field-separator]  'commands'  input-files
  [-F  field-separator],域分隔符,默认为空格或tab;
  commands为awk命令;input-files为待处理文件。
  Linux系统使用环境变量IFS存储分隔符;
DSC00016.png

  查看默认分隔符
DSC00017.png

  oldIFS=$IFS(把环境变量IFS存到oldIFS)
  IFS=","(定义分隔符为,)
DSC00018.png

  之后把环境变量返回原值(空格/tab)。
  1) shell脚本方式
DSC00019.png

  1) 将awk命令插入一个单独文件,然后调用
  Awk-f awk-script-file input-files
  其中,-f选项加载awk-script-file中的awk脚本,input-files跟上面的是一样的。
  1) 正则表达式用作awk_pattern: /regexp/
  例如:awk '/ ^[a-z]/' input_file
  2) 布尔表达式用作awk_pattern,表达式成立时,触发相应的actions执行。
  ① 表达式中可以使用变量(如字段变量$1,$2等)和/regexp/
  ② 布尔表达式中的操作符:
  关系操作符: < > = == !=
  匹配操作符: value ~ /regexp/ 如果value匹配/regexp/,则返回真
  value !~ /regexp/ 如果value不匹配/regexp/,则返回真
  例如: awk '$2 > 10 {print "ok"}' input_file
  awk '$3 ~ /^d/ {print "ok"}' input_file
  ③ &&(与) 和 ||(或) 可以连接两个/regexp/或者布尔表达式,构成混合表达式。!(非) 可以用于布尔表达式或者/regexp/之前。
  a) 正则表达式(/regexp/)
DSC00020.png

  取passwd中小写字母a到d开头的。
  a) 布尔表达式
  变量(如字段变量$1  $2)和/regexp/;
  关系操作
DSC00021.png

  :< > = == !=
  提取test.txt中chinese大于75为优秀。
  匹配操作符: value ~ /regexp/ 如果value匹配/regexp/,则返回真
  value !~ /regexp/ 如果value不匹配/regexp/,则返回真;
DSC00022.png

  提取passwd中匹配d开头的显示ok。
  a) &&(与)、||(或)
DSC00023.png

  模式包括两个特殊字段BEGINEND。使用BEGIN语句设置计数和打印头。BEGIN语句使用在任何文本浏览动作之前,之后文本浏览动作依据输入文本开始执行。END语句用来在awk完成文本浏览动作后打印输出文本总数和结尾状态标志。
  1) 动作:
  实际动作在大括号{}内指明。动作大多数用来打印。
  1. awk的运行过程:
  如果BEGIN 区块存在,awk执行它指定的actions
  awk从输入文件中读取一行,称为一条输入记录。(如果输入文件省略,将从标准输入读取)
  awk将读入的记录分割成字段,将第1个字段放入变量$1中,第2个字段放入$2,以此类推。$0表示整条记录。
  把当前输入记录依次与每一个awk_cmdawk_pattern比较,看是否匹配,如果相匹配,就执行对应的actions。如果不匹配,就跳过对应的actions,直到比较完所有的awk_cmd
  当一条输入记录比较了所有的awk_cmd后,awk读取输入的下一行,继续重复步骤,这个过程一直持续,直到awk读取到文件尾。
  awk读完所有 DSC00024.png 的输入行后,如果存在END,就执行相应的actions
  1) /etc/passwd文件 显示文件中用户名和登录shel DSC00025.png
  显示文件中用户名和登录shell,中间以逗号分隔
   DSC00026.png
  显示文件中UID大于500的所有用户的用户名和登录shell
   DSC00027.png
  显示/etc/passwd文件中的UID大于500的用户名和登录shell,而账户与shell之间以逗号分割,而且在所有行添加列名name,shell,在最后一行添加"blue,/bin/nosh"
   DSC00028.png
  函数及脚本的综合应用
  
  1、shell函数:shell允许将一组命令集或语句形成一个可用块,这些块称为shell函数。
  函数由两部分组成:函数标题、函数体。标题是函数名。函数体是函数内的命令集合。标题名应该唯一;如果不是,将会混淆结果,因为脚本在查看调用脚本前将首先搜索函数调用相应的shell。
   DSC00029.png
  
   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.iyunv.com/thread-553981-1-1.html 上篇帖子: shell if-Bad 下篇帖子: 常用shell脚本记录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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