grep,egrep及元字符和posix字符集
grep命令詳解
? ?grep命令是*nix上匹配行的一個工具,可以用來搜索匹配的行,對于查找指定字符和字符行非常好用,grep非常有效grep家族包含grep,egrep,fgrep,
grep使用的是基本元字符,egrep使用的是擴展正則表達式,,可以使用grep -E來使用egrep,使用grep -F來使用fgrep,或者直接使用egrep,fgrep,一般
來說grep,egrep比較常用,較少使用fgrep.下面來主要介紹grep和egrep.
? ? ?語法格式為 ? ? ?grep [OPTIONS] PATTERN [FILE...]
? ? ? ? ? ? ? ? ? ? ?grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
grep的常用選型
? ? ? ? -i: 不區分大小寫
? ? ? ? ?-n: 匹配行顯示行號
? ? ? ? ?-v: 反向匹配,顯示不匹配的行
? ? ? ? ?-w:匹配字母和數字
? ? ? ? ?-c:顯示匹配的行數
? ? ? ? ?--color:用顏色顯示匹配到的字符
? ? ? ? ?-o:僅顯示匹配的字符
? ? ? ? ?-A:顯示匹配的后幾行
? ? ? ? ?-B:顯示匹配的前幾行
? ? ? ? ?-C:顯示匹配的上下幾行
基本元字符
? ? ? ?^ :錨定行首
? ? ? ?$ :錨定行尾
? ? ? ?. :零個或一個字符
? ? ? ?* :一個字符
? ? ? ?[]: 里面任一字符
? ? ? ?[^]:非^后的字符
? ? ? ?\(..\) ?后向引用
? ? ? ?\< ? :錨定字符
? ? ? ?x\{m\} ?字符x出現m次
? ? ? ?x\{m,\} ?字符m大于m次
? ? ? ?x\{m,n\} ?字符出現大于等于m次小于n次
? ? ? ?\w :匹配單詞
? ? ? ?\W ?
? ? ? ?\b 匹配單詞詞首或詞尾
擴展元字符
? ? ? ? ? ?:0個或1個前面字符
? ? ? ? + ?:1個或多個前面字符
? ? ? ? () :一個表達式,可以用來后向引用 ?
? ? ? ? | ?:左右兩邊或者,表示選擇
POSIX字符類
[:alnum:]文字數字字符
飛數字字符字符
數字字符
非空字符(非空格、控制字符)
小寫字符
?控制字符
非空字符(包括空格)
標點符號
所有空白字符(新行,空格,制表符)
大寫字符
十六進制字符
實例
? ? ? ? grep [Ss] ?/proc/meminfo
? ? 2、取出默認shell為非bash的用戶;
? ? ? grep -v 'bash' /etc/passwd
? ? 3、取出默認shell為bash的且其ID號最大的用戶;
? ? ? ? grep 'bash' /etc/passwd | cut -d: -f3 |sort |tail -1
? ? 4、顯示/etc/rc.d/rc.sysinit文件中,以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行;
? ? ? ?grep '^#[[:space:]]\{1,\}[[:space:]]\{1,\}' ?/etc/rc.d/rc.sysinit
? ? 5、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行;
? ? ? ? ? ? grep '^[[:space:]]\{1,}' /boot/grub/grub.conf
? ? 6、找出/etc/passwd文件中一位數或兩位數;
? ? ? ? ? ? grep '\<[0-9]\{1,2\}\>' /etc/passwd
? ? 7、找出ifconfig命令結果中的1到255之間的整數;
? ? ? ? ? ? ? ? ifconfig eth0|egrep '2[0-5][0-5]|1[0-9][0-9]|[1-9][0-9]|[0-9]'
? ? 8、查看當前系統上root用戶的所有信息;
? ? ? ? ? ? ? ? ? grep '\<root\>' /etc/passwd
? ? 9、添加用戶bash和testbash、basher,而后找出當前系統上其用戶名和默認shell相同的用戶;
? ? ? ? ? ? ? ? ? ? ?grep '^\([[:alpha:]]\{1\}\.*\1$' ?/etc/passwd
? ? 10、找出netstat -tan命令執行的結果中以“LISTEN”或“ESTABLISHED”結尾的行; ? ? ? ? ? ? ? ? ? netstat -tan |egrep 'LISTEN|ESTABLISHED[[:space:]]\{1,\}$'? ? 11、取出當前系統上所有用戶的shell,要求:每種shell只顯示一次,且按升序顯示;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?cat /etc/passwd |cut -d: -f7 | sort -u
轉載于:https://blog.51cto.com/limeizhi/1362238
總結
以上是生活随笔為你收集整理的grep,egrep及元字符和posix字符集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 修改ActiveProcessLinks
- 下一篇: 【概念原理】四种SQL事务隔离级别和事务