grep是一款文字過濾工具,基於正規表示式進行模式匹配文字搜尋工具,
根據使用者指定的模式,對目標文字逐行進行匹配檢查,列印匹配到的行
基於perl的正規表示式
使用格式:grep [選項] 匹配模式 file物件
選項說明:
–color=auto:對匹配到的文字著色,高亮顯示
-i:忽略字元大小寫
-o:僅顯示匹配到的字串本身
-v:方向匹配,匹配到的文字行不顯示,不能匹配到的行顯示
-e:表示支援使用擴充套件的正規表示式,等同於egrep
-q:靜默模式,不輸出任何資訊到標準輸出
-a(after):顯示匹配到的行和其後面的行,給乙個數字
grep -a 1 root /etc/passwd
-b(before):顯示匹配到的行和其前面的行,給乙個數字
grep -b 1 root /etc/passwd
-c(center):顯示匹配到的行和其前後的行,給乙個數字
grep -c 1 root /etc/passwd
字元匹配
. :匹配任意單個字元
[ ]:匹配指定範圍內的任意單個字元
[^ ]:匹配指定範圍外的任意當個字元
[[:digit:]] [[:lower:]] [[:upper:]] [[:alpha:]] [[:alnum:]] [[:punct:]] [[:space:]]
匹配次數
用在要指定其出現的次數的字元的後面,用於限制其前面字元出現的次數,預設為貪婪模式
*:表示匹配其前面的字元任意次,0,1,多次
例如:grep 「x*y」
.*:匹配任意長度的任意字元
\?:匹配其前面的字元0次或一次,即其前面的字元是可有可無的
\+:匹配其前面的字元一次或多次,即其前面的字元要出現至少一次
\:精確匹配到其前面字元的m次
\:匹配其前面的字元至少m次,至多n次
\:至多n次
\:至少m次
位置錨定
^:行首錨定,用於模式的最左邊
$:行尾錨定,用於模式的最右邊
^pattern$:用於pattern來匹配整行
^$:空白行
^[[:space:]]$:空行或空白字元的行
單詞:非特殊字元組成的連續字元都稱為單詞
\< 或 \b:詞首錨定,用於單詞模式的左側
\> 或 \b:詞尾錨定,用於單詞模式的右側
\:匹配完整單詞
1:顯示/etc/passwd檔案中不以/bin/bash結尾的行
grep -v 「/bin/bash」 /etc/passwd
2:找出/etc/passwd檔案中的兩位數或三位數的行
egrep 「[0-9]」 /etc/passwd # egrep :擴充套件的正規表示式
3:找出/etc/rc.d/rc.sysinit(centos 6)或/etc/grub2.cfg(centos 7)檔案中,以至少乙個空白字元開頭,且後面有非空白字元的行
grep 「^[[:space:]]+[^[:space:]]+」 /etc/grub2.cfg
4:找出」netstat -tan」命令的結果中以』listen』後跟0、1或多個空白字元結尾的行
netstat -tan | grep 「listen[[:space:]]*$」
vim 末行模式 正規表示式匹配練習
正規表示式是由普通字元(例如字元 a 到 z)以及特殊字元(稱為"元字元")組成的文字模式。模式描述在搜尋文字時要匹配的乙個或多個字串。正規表示式作為乙個模板,將某個字元模式與所搜尋的字串進行匹配。
用查詢替換命令刪除檔案中以空白字元開頭的行的行首的空白字元
[root@shm shm]# vim file1.txt
sailjdlsahlahfladsfff
sdfafsda
sadf
assd dsfasssssss
dsa dsa
sdaaaaaaaaaaaaaaaaaaaaaaaa
a=1b=1
~ :%s/^[[:space:]]\+//g
# %:全文
# s:選擇
# / : 分隔符
# ^:行首錨定
# [ ]:匹配指定範圍內的任意單個字元
# [[:space:]] : 乙個空白符
# \ : 對特殊含義的字元進行轉譯
# +:匹配其前字元至少1次
# g :全域性
sailjdlsahlahfladsfff
sdfafsda
sadf
assd dsfasssssss
dsa dsa
sdaaaaaaaaaaaaaaaaaaaaaaaa
a=1b=1
~ 用查詢替換命令為檔案的每乙個空白字元開頭的行的首行加上#
sailjdlsahlahfladsfff
sdfafsda
sadf
assd dsfasssssss
dsa dsa
sdaaaaaaaaaaaaaaaaaaaaaaaa
a=1b=1
~
:%s/^[[:space:]]\+/\#&/g
# & :引用前面匹配到的值
# sailjdlsahlahfladsfff
sdfafsda
# sadf
assd dsfasssssss
dsa dsa
# sdaaaaaaaaaaaaaaaaaaaaaaaa
a=1# b=1
~ 為檔案的前三行的行首加上#號
sailjdlsahlahfladsfff
sdfafsda
sadf
assd dsfasssssss
dsa dsa
sdaaaaaaaaaaaaaaaaaaaaaaaa
a=1b=1
~
:1,3s/^./\#&/g
# . :匹配任意單個字元
# sailjdlsahlahfladsfff
#sdfafsda
# sadf
assd dsfasssssss
dsa dsa
sdaaaaaaaaaaaaaaaaaaaaaaaa
a=1b=1
~ 將檔案中所有的a=1 替換為a=0,所有的b=1替換為b=0
sailjdlsahlahfladsfff
sdfafsda
sadf
assd dsfasssssss
dsa dsa
sdaaaaaaaaaaaaaaaaaaaaaaaa
a=1b=1
~
:%s/\(a\|b\)=1/\1=0/g # ( ):分組,括號內的模式匹配到的字元會被記錄到正規表示式引擎的內部變數中 a | b:表示a或者b
sailjdlsahlahfladsfff
sdfafsda
sadf
assd dsfasssssss
dsa dsa
sdaaaaaaaaaaaaaaaaaaaaaaaa
a=0b=0
~ diff 與patch
diff:逐行比較檔案的不同,並且顯示出來。
patch: 打補丁工具,將補丁打到老檔案裡面,也就是diff左邊的那個檔案,使得老檔案和新檔案一樣
格式:diff [選項] 老檔案 新檔案
格式:patch [選項] 老檔案
# 比較兩個檔案的不同
[root@7 yhy2]# diff fstab.old fstab.new
2c2< #
---> # yhy
5c5< #
---> # yhy
# 將不同作為補丁輸出到fstab.patch
[root@7 yhy2]# diff fstab.old fstab.new > fstab.patch
# 將老檔案打補丁
[root@7 yhy2]# patch -i fstab.patch fstab.old
patching file fstab.old
# 再次比較兩個檔案時,已經沒有不同的了
[root@7 yhy2]# diff fstab.old fstab.new
# 還原補丁檔案
patch -r -i fstab.patch fstab.old
# 再次比較,發現fstab.old又還原了
[root@7 yhy2]# diff fstab.old fstab.new
2c2< #
---> # yhy
5c5< #
---> # yhy
隨筆知識2
1.dom同時支援事件捕獲和事件冒泡,但是事件捕獲先發生。2.傳統事件處理程式指派方法 永遠只執行新新增的 原來的會被覆蓋。被廣泛支援 3.現代事件處理程式指派方法 不會產生覆蓋,新 在舊 後面執行 在舊版本ie上執行有問題 4.處理事件程式返回false的效果 1 click 單選按鈕和複選按鈕框...
專案隨筆2
除了ssm的另一種整合方式外,可能最大的體會就是頁面物件,業務層處理和系統引數這幾部分了。頁面物件,以前只是把分頁的當前頁和頁面大小引數存在乙個物件中傳到後台,後端查出總記錄數和頁面資料等繼續作封裝,這次還包括了查詢引數,因為查詢引數都和實體物件相關,將實體物件封裝到頁面物件,傳回前端。業務處理,以...
專案隨筆2
mapstatetoprops裡返回的資料,是從collegeredux中reducer返回的新的state中獲取的 mapstatetoprops state mapdispatchtoprops dispatch from collegeredux 如果是內部路徑,可以用browserhisto...