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

shell脚本(四)

[复制链接]

尚未签到

发表于 2018-8-25 13:19:55 | 显示全部楼层 |阅读模式
shell脚本(四)
(7)tr命令
  #实现字符转换功能
  #-c string:反选string字符集,即除了该字符串的所有字符集
  #-d string:删除string中出现的所有字符
  #-s:删除所有重复出现的字符序列,只保留一个
  #删除所有数字
  tr -d "[[:digit:]]" < name.txt
  tr -d 0-9 < name.txt
DSC0000.jpg

  #所有小写字母转换成大写字母
  tr  "[a-z]" "[A-Z]" < name.txt
  tr  "[[:lower:]]" "[[:upper:]]" < name.txt
DSC0001.jpg

  #-c用法,将所有非26个字母替换成换行符,并且重复出现的换行符压缩成1个换行符
  tr -cs "[a-z][A-Z]" "[\n]" < name.txt
DSC0002.jpg

  #支持使用字符*数字模式,如n*4代表n出现4次
  #-s是将连续重复出现的字母、数字压缩成1个
  tr -s "[a-z][A-Z],[[:digit:]]" < num.txt
  #结果同1行的test,t和t并不算是重复的
DSC0003.jpg

3、正则表达式
(1)匹配符:"*"、"^"、"."、"$"等
  "*":0个或多个在*字符之前的那个普通字符
  ".":匹配任意字符
  "^":匹配行首,放在[]字符集里面表示取反
  "$":匹配行末
  "[]":匹配字符集
  "\":转义符,屏蔽一个元字符的特殊意义
  "\":精确匹配符号
  "\{n\}":匹配前面字符出现n次
  "\{n,\}":匹配前面字符至少出现n次
  "\{n,m\}":匹配前面字符出现n-m次
(2)扩展:"?"、"+"、"()"、"|"
  "?":匹配0个或1个在?字符之前的那个普通字符
  "+":匹配1个或多个在+字符之前的那个普通字符
  "()":表示一个字符集
  "|":表示"或",匹配一组可选的字符
(3)grep命令
  #支持正则表达式的多用途文本搜索工具
  #-c:只输出匹配行的数量;-i:搜索时忽略大小写;-h:查询多文件时不显示文件名;
  #-l:只列出符合匹配的文件名,而不列出具体的匹配行;-n:列出匹配及行号;
  #-s:不显示不存在或无匹配文件的错误信息;-v:显示不包含匹配文本的所有行;
  #-w:匹配事词;-x:匹配事行;-r:递归查询,搜索子目录;-q:禁止输出任何结果,以退出
  #状态来表示搜索是否成功;-b:打印匹配行距文件头的偏移量,以字节为单位;
  #-o:与-b结合使用,打印匹配词距文件头的偏移量,以字节为单位;-E:使用扩展表达式
  #-F:不使用正则表达式,以字符串的字面意思进行搜索
  #需要特别注意的是,所说的出现次数是指连续出现,而不是总共出现的次数!!!
  #"*"用法,字母m出现至少出现0次
  grep "nam*3" name.txt
DSC0004.jpg

  #"."用法,搜索"na任意字符3"
  grep "na.3" name.txt
DSC0005.jpg

  #搜索以A开头的行,并输出行号
  grep -n ^A a.txt
DSC0006.jpg

  #"$"用法,搜索以10结尾的行
  grep 10$ name.txt
DSC0007.jpg

  #"[]"用法,搜索一个任意小写字母后跟一个任意数字的行
  grep [a-z][0-9] name.txt
DSC0008.jpg

  #"\"用法,搜索以*号开头的行
  grep ^\* name.txt
DSC0009.jpg

  #"\"用法,搜索出现name3的行
  grep "\" bkname.txt
DSC00010.jpg

  #"\"用法,搜索数字0至少出现5次
  grep "0\{5,}" bkname.txt
DSC00011.jpg

  #"\"用法,搜索数字7出现2次到3次的行
  grep  "7\{2,3\}" name.txt
DSC00012.jpg

  #"?"、"+"、"()"和"|"属于正则表达式扩展,需要使用-E参数
  #"?"用法,搜索包含nu或者num的行
  grep -E "num?" bkname.txt
DSC00013.jpg

  #"+"用法,搜索字母t出现至少1次的行
  grep -E "t+" bkname.txt
DSC00014.jpg

  #"()"和"|"用法结合,搜索包含nu或者num的行
  grep -E "(nu|num)" bkname.txt
DSC00015.jpg

  #多文件搜索包含name1的行,并输出行号
  grep name1 name.txt num.txt
DSC00016.jpg

  #显示匹配行前后2行
  grep -2 name2 name.txt
DSC00017.jpg

  #显示匹配行的
  grep -A2 name2 name.txt
DSC00018.jpg

  #-c:用法,统计空白行数量
  grep -c ^$ /etc/httpd/conf/httpd.conf/
DSC00019.jpg

  #-i:忽略大小写
  grep -i name bkname.txt
DSC00020.jpg

  #-h:多文件查询不显示文件名
  grep -h test bkname.txt num.txt
DSC00021.jpg

  #-n:显示匹配行和行号
  grep -n test bkname.txt
DSC00022.jpg

  #-w:查找的字符串必需为完整的单词;
  #-x:显示完全符合要求的行,而且所搜索的字符串必需是单独一行
  grep -w test bkname.txt
  grep -x test bkname.txt
DSC00023.jpg



运维网声明 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-556422-1-1.html 上篇帖子: shell基础特性2-9470860 下篇帖子: shell编程之grep命令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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