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

[经验分享] linux grep学习整理

[复制链接]

尚未签到

发表于 2018-5-22 08:55:21 | 显示全部楼层 |阅读模式
  第一部分:补充
  umask  遮罩码
  目录权限为777-umask
  用户为 666-umask       如果某一类用户的权限有执行权限,会自动加1
  管理员的遮罩码为0022     普通用户的为0002
  第二部分:文本处理工具
  1、定义:
  Linux文件三个本地处理工具
  A:grep 文本过滤工具 ,搜索工具
  B:sed文件编辑工具
  C:awk文本报告生成器
  Grep :Global research regular expression and printing简写
  根据用户指定的模式(pattern)进行去搜索目标文本模式:由正则表达式的元字符有文本字符所填写的过滤条件
  组成:由元字符 regexp(特殊字符):字符不表示字面意义,表示通配功能
  正则表达式类型
  基本正则bre,Grep支持基本正则表达式(默认情况下)
  扩展正则ere:可利用egrep
  2、 语法结构:
  grep [OPTIONS] PATTERN [FILE...]   
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
  选项说明:
  -v显示没有匹配的项目,对结果取反
  -i 不区分大小写
  -o 仅显示匹配到的串,其它不显示
  -E支持扩展正则表达式
  PATTERN 称为模式
  模式中如果是字符采用单引号‘’
  如果是变量采用双引号” ”,要做替换
  3、通配符glob
       *   任意长度的任意字符
       ?  任意单个字符
       [ ] 指定范围内的任意单个字符
  4、基本正则表达达式元字符  
  第一类:字符匹配
     .  匹配任意单个字符
  [ ] 指定范围内的任意单个字符   例如:[abc],指定a, b,c,[aA]说明A,a
  [^]表示取反的 例如[^ab] 不包括a,b的之外其它字符
  字符集形式[: :]                               DSC0000.jpg
  使用通过[^[:upper:]]形式,外面再加一个方括号[],
  * 匹配其前面的字符任意次   例如ab*c    表明匹配字符b任意次包括0次
  .* 任意长度任意字符  ,贪婪模式
  第二类:次数匹配
     x\{m,n\} 指定字符x,至少出现M次,至多N次
  x\{m,\}  指定字符x,至少出现M次,多者不限
  x\{0,n\}  至多出现N次
  x\{m\}精确M次
  ?  表示匹配其前面的字符0次或1次,前面字符可用可无
  第三类:锚定符 :出现在某个位置
  行锚定:
  ^ 行首匹配   锚定行首
  $ 行尾匹配   锚定行尾
  ^$ 锚定空白行
  单词锚定:指连续字符
  \< 锚定词首,后面为单词,例如\< root  说明是以root为词首的   \broot
  \> 锚定词尾     例如 root\>  root\b
  锚定词词首或词尾可用 \b
  \<roor\>  表示精确匹配root
  第四类:针对字符分组,后面可引用
  \(\ )  例如\(aabb\)  aabb为可引用字符,分组完成后后面可引用
  \1表示引用第一组匹配字符  \2表示引用第二次匹配字符
  例如:grep “\(l..e\).* \1r”test.txt  说明: \1表示引用第一组字符”l..e”
  例如love后面引用为lover
  \具有转意的字符,能够把特殊字符变为普通字符,例如\*,输出为字符*
  5:扩展正值表达式
    其它与基本正则表达式相同
  \(\)换为—>( ) 可以用做分组
  \{ }换为—>{ }
  +:次数匹配,匹配其前字符至少一次
  | 表示或者  a|b 表示a或者b   (C|c)at 表示二个分组  不加括号表示为C、cat
  练习:
  3、显示/etc/passwd文件中以bash结尾的行
grep 'bash\>' /etc/passwd  输出为
DSC0001.jpg

  4、显示/etc/passwd文件中的两位数或三位数
grep -E '\<([0-9]{2}|[0-9]{3})\>' /etc/passwd  备注:[0-9]{2}表示[0-9]重复二次,即二位数,这里注意优
  先级的问题()的优先级高于\<  { 2 }这种的写法采用扩展正值表达式   
DSC0002.jpg
  5、显示`netstat -tan`命令结果中以‘LISTEN’后跟0个、1个或者多个空白字符结尾的行
netstat -tan|grep 'LISTEN[[:space:]]\{,\}'  输出为
DSC0003.jpg

  6、添加用户bash、testbash、basher以及nologin用户(nologin用户的shell为/sbin/nologin);而后找出/etc/passwd文件中用户名与其shell名相同的行
grep '\(\<bash\).*\1' /etc/passwdcut -d: -f1,7 /etc/passwdgrep "\(\<bash\):.*\1" /etc/passwd  或者grep "\(\<bash\):.*\1$" /etc/passwd  

DSC0004.jpg

egrep '(^[[:alpha:]]+\>).*\1$' /etc/passwd  
DSC0005.jpg

  7、显示当前系统上root、centos或者user1用户的默认shell和UID (请事先创建这些用户,若不存在)
grep -E '^(root|user1|centos).*' /etc/passwd|cut -d: -f3,7
DSC0006.jpg

  8、找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行
grep -n '[[:alpha:]]_*.*()' /etc/rc.d/init.d/functions  其中 _*表示匹配次数包括0次
DSC0007.jpg      

  9、使用echo输出一个路径,而后egrep找出其路径基名;进一步的使用egrep取出其目录名
  目录名   pwd|egrep -o '/.*[[:punct:]]'
DSC0008.jpg

echo '/tmp/51cto/dirname'|egrep -o '/.*[[:punct:]]'
DSC0009.jpg

  基名:
[root@centos71 dirname]# echo '/tmp/51cto/dirname'|egrep -o '[[:alpha:]]+$'  主要考虑基名都是以字母结尾
DSC00010.jpg

  10、找出ifconfig命令执行结果中1-255之间的数字
ifconfig|grep -E "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\>"
DSC00011.jpg      
  或者   {2}表示[0-5]或者[0-9]重复2次

[root@centos71 /]# ifconfig|grep -E "\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-5]{2})\>"  

运维网声明 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-478929-1-1.html 上篇帖子: linux java 配置 下篇帖子: linux之RAID 学习
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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