grep:基本正則表達式,-E -F
egrep:擴展正則表達式,-G -F
fgrep: 不支持正則表達式,-F
egrep:
支持擴展的正則表達式實現類似于grep文本過濾功能; grep -E
egrep [OPTIONS] PATTERN [FILE….]
-l, -o, -v, -q, -A, -B, -C
-G:支持基本正則表達式
擴展正則表達式的元字符:
字符匹配:
. :任意單個字符
[]: 指定范圍內的任意單個字符
[^]:指定范圍外的任意單個字符
次數匹配:
*:任意次,0,1或多次;
?:0吃貨1次,其前的字符是可有可無的;
+ :其前字符至少1次;
{m}: 其前的字符m次;
{m,n}:至少m次,至多n次;
{0,n}
{m,}
位置錨定
^:行首錨定;
$:行尾錨定
\>,\b: 詞尾錨定;
分組及引用:
():分組:括號內的模式匹配到的字符會被記錄于正則表達式引擎的內部變量中;
后向引用:\1,\2,….
或:
a|b: a或b :
C|cat: C或cat
(c|C)at: cat或Cat
練習:1、找出/proc/meminfo文件中,所有在大寫或小寫S開頭的行;至少有三種實現方式:
~]# grep -i "^s" /proc/meminfo
~]# grep "^[sS]" /proc/meminfo
~]# grep -E "^(s|S)" /proc/meminfo
2、顯示當前系統上root、centos或user1用戶的相關信息;
~]# grep -E"^(root|centos|user1)\>" /etc/passwd
3、找出/etc/rc.d/init.d/functions文件中某些單詞后面跟一個小括號的行;
~]# grep -E -o "[_[:alnum:]]+\(\)" /etc/passwd
4、使用echo命令輸出一絕對路徑,使用egrep取出基名;
~]# echo /etc/sysconfig/ |grep -E-o "[^/]+/?$"
5、找出ifconfig命令結果中的1-255之間的數值;
~]# ifconfig | grep -E -o "\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>"
6、課外作業:找出Ifconfig命令結果中的IP地址;
7、添加用戶bash,testbash,basher 以及nologin(其shell為/sbin/nologin/;而后找出/etc/passed文件中用戶名同shell的行;
~]# grep -E "^([^:]+\).*\1$" /etc/passwd
fgrep :不支持正則表達式元字符;
當無需要用到元字符取編寫模式是,使用fgrep 必能更好;
文本查看僅處理工具:wc, cut , sort, unig, diff, patch
wc: word count
wc:[OPTION]…[FILE]…
-l:lines
-w:words
-c: bytes
cut:
cut OPTION…[FILE]…
OPTION:
-d CHAR:以指定的字符為分隔符
-f FIELDS: 挑選出的字段;
#:指定的單個字段
##:連續的多個字段;
#‘#:離散的多個字段;
sort:
sort [OPTION]…[FILE]…
-n 基于數值大小而非字符進行排序;
-t CHAR; 指定分隔符:
-k#: 用于排序比較的字段;
-r :逆序排序;
-f: 忽略字符大小寫
-u: 重復的行只保留一份;
重復行
uniq:
report or omit repeated lines報告或移除重復的行
uniq [OPTION]…[INPUT [OUTPUT]]
-c: 統計每一行重復出現的次數
-u:僅顯示未重復非行
-d:僅顯示重復過的行;
diff: compare files line by line 逐行比較文件中的內容
diff [OPTION]…FILES
diff /PATH/TO/OLDFILE /PATH/TO/NEWFILE> /PATH/TO/PATCH_FILE
-U:使用unfied機制,即顯示要修改的行的上下文,默認為3行;
patch /PATH/TO/OLDFILE < /PATH/TO/PATCH_ILE
l練習:取出ifconfig eno16777736命令結果中的ip地址;
原創文章,作者:shadow,如若轉載,請注明出處:http://www.www58058.com/64536