一、正則表達式
? egrep默認使用的是擴張正則。
? 表示次數(shù)
* | 匹配前面字符任意數(shù) |
---|---|
? | 0次或者1次 |
+ | 1次或者多次 |
{n} | 匹配n次 |
{m,n} | 最少m次,最多n次 |
{,n} | 匹配前面的字符最多n次 |
{n,} | 匹配前面的字符最少n次 |
? 表示分組
()分組 | 將多個字符捆綁在一起當(dāng)作一個整體處理 |
---|---|
\1、\2 | 后向引用 |
| | 或者 |
a|b | a或者b |
C|cat | C或cat |
(C|c)at | Cat或cat |
二、grep
? 格式:grep [選項]… 查找條件 目標文件
選項 | 功能 |
---|---|
-color=auto | 對匹配到的文本著色顯示 |
-m | 匹配#次后停止 |
grep -m 1 root /etc/passwd | 多個匹配只取第一個 |
-v | 顯示不被pattern匹配到的行,即取反 |
grep -Ev '[[:space:]]*#|^$' | |
-i |
忽略字符大小寫 |
-n | 顯示匹配的行號 |
-c | 統(tǒng)計匹配的行號 |
grep -c root /etc/passwd | 統(tǒng)計匹配到的行號 |
-o | 僅顯示匹配到的字符串 |
-q | 靜默模式,不輸出任何模式,用途寫腳本 |
-A | after,后#行 |
grep -A3 root /etc/passwd | 匹配到行后3行顯示出來 |
-B | before,前#行 |
-C | context,前后各#行 |
-e | 實現(xiàn)多個選項間的邏輯or關(guān)系 |
grep -e root -e bash /etc/passwd | 包含root或者包含bash的行 |
grep -E root|bash /etc/passwd | |
-w | 匹配整個單詞 |
grep -w root /etc/passwd | |
useradd rooter | |
-E | 使用ERE,相當(dāng)于egrep |
-F | 不支持正則表達式,fgrep |
-f | file根據(jù)模式,處理兩個文件相同內(nèi)容 把第一個文件作為匹配條件 |
-r | 遞歸目錄,但不處理軟鏈接 |
-R | 遞歸目錄,但處理軟鏈接 |
? 統(tǒng)計當(dāng)前主機的連接狀態(tài)?
? 統(tǒng)計當(dāng)前連接主機數(shù)
三、sed
? sed是行編輯器,和vi不同的是,sed是讀取一行,處理一行,輸出一行;而vi是將整個文件放到內(nèi)存里打開。前者基本無視文件內(nèi)容的大小,后者要注意自身內(nèi)存是否能夠涵蓋住文件大小。
? 格式:sed [選項]... {腳本(如果沒有其他腳本)} [輸入文件]...
? 3.1 基本用法
? ??sed [option]...? ? ? ? ? ? 'script;script;...' ????????????????[input ?file...]
? ? ? ? 選項? ? ? ? ? ? ? ? ? ? ? ? ? 自身腳本語法? ? ? ? ? ? ? ?支持標準輸入管道
選項 | 功能 |
---|---|
-n | 不輸出模式空間到屏幕,即不自動打印 |
-e | 多點編輯[root@www data]#sed -n -e '/^r/p' /etc/passwd |
-f |
FILE從指定文件中讀取編輯腳本 |
-r、-E | 使用擴展正則表達式 |
-i.bak | 備份文件并原處編輯 |
? 3.2 sed腳本語法格式
? ? 語法:地址+命令
? ? ?1. 不給地址:給全文進行處理
? ? ?2.單地址:
? ? ? ?#:指定的行? $:最后一行
? ? ? /pattern/:該此處模式所能匹配到的每一個行
? ? 3.地址范圍
? ? ? #,#:從#行到第#行。舉例:3,6代表從第3行到第6行
? ? ? #,+#:從#行到第+#行。舉例:3,+4代表從第3行到第7行
? ? 4.步行:~
? ? ? 1~2? 奇數(shù)步
? ? ? 2~2? 偶數(shù)步
命令 | 注釋 |
---|---|
p | 打印當(dāng)前模式空間內(nèi)容,追加到默認輸出之后 |
Ip | 忽略大小寫輸出 |
d | 刪除模式空間匹配的行,并立即啟動下一輪循環(huán) |
a | [\text]在指定行后面追加文本,支持使用\n實現(xiàn)多行追加 |
i | [\text]在行前面插入文本 |
c | [\text]替換行為單行文本或多行文本 |
w | file保存模式匹配的行至指定文件 |
r | file讀取指定文件的文本至模式空間中匹配到的行號 |
= | 為模式空間的行打印行號 |
! | 模式空間中匹配行取反處理 |
q | 結(jié)束或退出sed |
? 另外它還支持正則表達式
? ? 自動打印需要打印否則會全部打印,如圖所示?
? ? 正確結(jié)果應(yīng)該如下圖所示
? ? 匹配兩個正則表達式的行
? ? ? 基本格式:?'/表達式1/,/表達式2/p'? 文件名
? ? 匹配方式
- ? ? ? 先開始找b開頭一直找到f開頭
- ? ? ? 然后再重新找b開頭,一找到f開頭,沒有f開頭就全顯示
- ? ? ? 重復(fù)循環(huán)
? ? 奇偶數(shù)表示
? ? 選項-d:刪除
? ? 修改文件內(nèi)容,常常用于修改配置文件
? ? -i和-i.bak的區(qū)別
? ? ? -i:修改文件
? ? ? -i.bak:修改文件前先備份
? ? 選項-a:追加?
? 3.3 搜索替代
? ? s/pattern/string/修飾符 查找替換,支持使用其它分隔符,可以是其它形式:s@@@,s###
? ? 替換修飾符:
? ? ? g 行內(nèi)全局替換
? ? ? p 顯示替換成功的行
? ? ? w ??/PATH/FILE 將替換成功的行保存至文件中
? ? ? I,i ??忽略大小寫
? ? 內(nèi)容較長就不展示了
? ?
? ? 提取版本號
[root@localhost /]#cat 1.txt | grep -e "[0-9]\+\."
ant-1.9.7.jar
ant-launcher-1.9.7.jar
antlr-2.7.7.jar
antlr-runtime-3.4.jar
aopalliance-1.0.jar
archaius-core-0.7.6.jar
asm-5.0.4.jar
aspectjweaver-1.9.5.jar
bcpkix-jdk15on-1.64.jar
bcprov-jdk15-1.46.jar
bcprov-jdk15on-1.64.jar
checker-compat-qual-2.5.5.jar[root@localhost /]#cat 1.txt |sed -r 's/.*-(.*)\.jar/\1/'
1.9.7
1.9.7
2.7.7
3.4
1.0
0.7.6
5.0.4
1.9.5
1.64
1.46
1.64
2.5.5
? 3.4 變量
? 3.5 改配置文件
? 3.6 修改網(wǎng)卡名
文章來源:http://www.zghlxwxcb.cn/news/detail-827233.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-827233.html
到了這里,關(guān)于正則表達式(拓展)、grep(拓展)和sed的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!