熟悉Linux運維工作的小伙伴們都知道,在Linux操作系統中,除了Cat、tac、more、less等命令之外,還有很多用于文本查看的命令,比如head、tail等,本文將為大家詳細的介紹一下。
成都創新互聯公司服務項目包括巴林右旗網站建設、巴林右旗網站制作、巴林右旗網頁制作以及巴林右旗網絡營銷策劃等。多年來,我們專注于互聯網行業,利用自身積累的技術優勢、行業經驗、深度合作伙伴關系等,向廣大中小型企業、政府機構等提供互聯網行業的解決方案,巴林右旗網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到巴林右旗省份的部分城市,未來相信會繼續擴大服務區域并繼續獲得客戶的支持與信任!
cat:合并文件或查看文件內容
tac:反向顯示文件內容
more:分頁顯示文件內容
less:分頁顯示文件內容
head:顯示文件內容頭部
tail:顯示文件內容尾部
tailf:跟蹤日志文件
cut:從文本中提取一段文字并輸出
split:分割文件
paste:合并文件
sort:文本排序
join:按兩個文件的相同字段合并
uniq:去除重復行
wc:統計文件的行數、單詞數或字節數
iconv:轉換文件的編碼格式
dos2unix:將DOS格式文件轉換成UNIX格式
diff:比較兩個文件的不同
vimdiff:可視化比較工具
rev:反向輸出文件內容
tr:替換或刪除字符
od:按不同進制顯示文件
tee:多重定向
vi/vim:純文本編輯器
一、基本正則列表與擴展正則
二、sed 文本處理工具的用法介紹
三、認識sed工具的 n、r、i 選項指令
四、認識sed工具的 p、d、s 條件指令
五、認識sed工具的 i、a、c 條件指令
六、認識sed高級應用 r、w 條件指令
七、綜合案例
Linux sed
Stream EDitor,流式編輯器
一、基本正則列表與擴展正則
根據推出時間的不同,分為基本正則和擴展正則,擴展正則在基本正則的基礎上做了一些優化和新增了一些正則表達符號,因為一些命令沒有及時更新,所以你可能會遇到有些命令只支持基本正則,不支持擴展正則,或者需要添加一些支持擴展正則的選項。
關于正則與擴展正則區別的詳細介紹可以看我另一篇shell 正則的介紹
基本正則列表
擴展正則列表
二、sed 文本處理工具的用法介紹:
相關說明如下:
sed命令的常用選項如下:
sed命令常用條件指令如下
三、認識sed工具的 n、r、i 選項指令
# sed [選項] '條件指令' 文件.. ..
上面的條件指令 我們可以拆分為 # sed [選項] '范圍界定+操作指令' 文件.. .. 的格式這樣更容易理解
sed命令可以使用行號或正則做為條件匹配:
1)sed命令的 -n 選項
執行p打印等過濾操作時,希望看到的是符合條件的文本。但不使用任何選項時,默認會將原始文本一并輸出,從而干擾過濾效果。比如,嘗試用sed輸出/etc/hosts的第1行:
可以發現所有的行都被顯示出來了(第1行重復2次)。—— 正確的用法應該添加 -n 選項,這樣就可以只顯示第1行了:
行號可以是連續的行號,如打印passwd第3到第6行賬戶的信息:
2)sed命令的 -r 選項
需要用到擴展正則時,需要加 -r選項
3)sed命令的 -i 選項
正常情況下,sed命令所做的處理只是把操作結果(包括打印、刪除等)輸出到當前終端屏幕,而并不會對原始文件做任何更改:
若希望直接修改文件內容,應添加選項 -i 。
需要特別注意的是,和一些指令組合和使用的先后順序都會對最終輸出結果產生影響
例如: 指令 -n、和操作操作p
比如,直接刪除test.txt(自行創建一個任意內容的文件)的第1~4行:
下文中關于使用sed修改文件的示例中,為了避免大家在練習過程中因誤操作導致系統故障,命令省略 –i 選項,不再逐一說明。需要時,大家可自行加上此選項。
4)多個指令可以使用分號隔離
用分號來隔離多個操作,比如:
1)行號案例
2)正則案例
3)沒有條件,則表示匹配所有行
四、認識sed工具的 p、d、s 條件指令
1)下面看看sed工具的p指令案例集錦(自己提前生成一個a.txt文件)
2)下面看看sed工具的d指令案例集錦(自己提前生成一個a.txt文件)
3)sed命令的s替換基本功能(s/舊內容/新內容/選項):
4)下面看看sed工具的s指令案例集錦(自己提前生成一個a.txt文件)
注意:替換操作的分隔“/”可改用其他字符,如#、等,便于修改文件路徑
以下操作使用nssw.txt作為測試文件。
參考數據文件內容如下:
5)刪除文件中每行的第二個、最后一個字符
分兩次替換操作,第一次替換掉第2個字符,第二次替換掉最后一個字符:
6)將文件中每行的第一個、倒數第1個字符互換
每行文本拆分為“第1個字符”、“中間的所有字符”、“倒數第1個字符”三個部分,然后通過替換操作重排順序為“3-2-1”:
7)刪除文件中所有的數字
因原文件內沒有數字,行首也沒有空格,這里在內容中新增一些數字另外新幾行內容 首行添加幾行空格,生成一個新測試文件以 nssw2.txt
以nssw2.txt文件為例,刪除所有數字、行首空格的操作如下:
8)為文件中每個大寫字母添加括號[]
使用“()”可實現保留功能,所以可參考下列操作解決:
五、認識sed工具的 i、a、c 條件指令
# sed [選項] '條件指令' 文件..
sed工具的多行文本處理操作:
基本語法格式案例:
1)sed命令的 i 指定行之前插入基本功能
2)sed命令的a追加基本功能
3)sed命令的c替換基本功能
六、認識sed高級應用 r、w 條件指令
1)sed命令的 r 讀取文件
2)sed命令的 w 保存到文件
七、綜合案例
1) 綜合案例1
2)綜合案例2 腳本應用
grep (過濾)
過濾需要的內容,
-v 需要排除的內容,
-i不分辨大小寫,
-n匹配的內容在其行首顯示行號,
-A (after)顯示匹配字符串及其后n行,
-B (before)顯示匹配字符串及其前n行,
-C(context)顯示匹配字符串
下邊是想湊字數的啦啦
grep egrep區別
grep 默認不支持擴展 但可以通過-E 選擇來支持擴展正則
egrep 支持擴展正則
關于正則與擴展正則的區別可以看我另一篇shell 正則的介紹
文件處理順序 以行為單位,逐行進行處理
默認只輸出與表達式相匹配的文本行
基本用法
- 格式1:egrep [選擇] '正則表達式' 文件
- 格式2:前置命令 | egrep [選擇] '正則表達式'
? egrep命令工具 (擴展正則命令)
? 常用命令選項
?grep 正則表達式,用來查找過濾文檔的工具符號
grep "root" user //在user文檔中查找有單詞root的行
grep "^root" user //在user文檔中查找以單詞root開頭的行
grep "bash " user //查找空行
grep "^ " user //查找以空格開頭的行
grep "[rot]" user //查找字母r或者o或者t
grep "roo[tn]" user //查找root或者roon
grep "[^rot]" user //查找字母r或者o或者t之外的內容
grep "[a-z]" user //查找小寫字母
grep "[A-Z]" user //查找大寫字母
grep "[a-Z]" user //查找所有字母
grep "[0-9]" user //查找數字
grep "r..t" user //查找以r開頭t結尾中間有2個任意字符的單詞
grep "r. " user //查找以r開頭后面任意字符 相當手通配符
grep "ro*" user //查找以r開頭后面有或沒有字母o的單詞,o可以出現任意次
grep "o{1,2}" user //查找o出現1次到2次的行
grep "o{2,3}" user //查找o出現2次到3次的行
grep "o{2}" user //查找o出現2次的行
grep "o{1,} " user //查找o出現1次以及1次以上
grep "(:0){2}" user //查找:0(數字零)連續出現2次的行
擴展正則
egrep "o+" user //查找o出現1次以及1次以上
egrep "o?" user //查找o出現0次或1次
egrep "o{1,2}" user //查找o出現1次到2次的行
egrep "o{2,3}" user //查找o出現2次到3次的行
egrep "o{2}" user //查找o出現2次的行
egrep "o{1,}" user //查找o出現1次以及1次以上
egrep "(:0){2}" user //查找:0(數字零)連續出現2次的行
egrep "bash|nologin" user //查找bash或者nologin
egrep "\bthe\b" a //查找單詞the,前后是空格或者特殊符號
案例:
正則表達式匹配練習
1)典型的應用場合:grep、egrep檢索文本行
grep命令不帶-E選項時,支持基本正則匹配模式。比如“word”關鍵詞檢索、“^word”匹配以word開頭的行、“word$”匹配以word結尾的行……等等。
輸出以“r”開頭的用戶記錄:
輸出以“localhost”結尾的行:
若希望在grep檢索式同時組合多個條件,比如輸出以“root”或者以“daemon”開頭的行:
而若若使用grep -E或egrep命令,可支持擴展正則匹配模式,能夠自動識別 |、{} 等擴展正則表達式中的特殊字符,用起來更加方便,比如:
或者
使用grep -E 與 使用egrep命令完全等效,推薦使用后者,特別是涉及到復雜的正則表達式的時候。
2)grep、egrep命令的-q選項
選項 -q 表示 quiet(靜默)的意思,結合此選項可以只做檢索而并不輸出,通常在腳本內用來識別查找的目標是否存在,通過返回狀態 $? 來判斷,這樣可以忽略無關的文本信息,簡化腳本輸出。
比如,檢查/etc/hosts文件內是否存在192.168.4.4的映射記錄,如果存在則顯示“YES”,否則輸出“NO”,一般會執行:
這樣grep的輸出信息和腳本判斷后的提示混雜在一起,用戶不易辨別,所以可以改成以下操作:
是不是清爽多了,從上述結果也可以看到,使用 -q 選項的效果與使用 /dev/null的效果類似。
3)基本元字符 ^、$ —— 匹配行首、行尾
輸出注釋的配置行(以#開頭的行):
統計本地用戶中登錄Shell為“/sbin/nologin”的用戶個數:
提示: -m10僅在文件的前10行中過濾,后面的行不再過濾。
結合 -c 選項輸出匹配的行數
使用 -c 選項可輸出匹配行數,這與通過管道再 wc -l的效果是相同的,但是寫法更簡便。比如,統計使用“/bin/bash”作為登錄Shell的正常用戶個數,可執行:
或者
4)基本元字符 . —— 匹配任意單個字符
以/etc/rc.local文件為例,確認文本內容:
輸出/etc/rc.local文件內的空行(用 –v 選項將條件取反):
5)基本元字符 +、?、 —— 目標出現的次數*
還以/etc/rc.local文件為例:
輸出包括 f、ff、ff、……的行,即“f”至少出現一次:
輸出包括init、initial的行,即末尾的“ial”最多出現一次(可能沒有):
輸出包括stu、stuf、stuff、stufff、……的行,即末尾的“f”可出現任意多次,也可以沒有。重復目標只有一個字符時,可以不使用括號:
輸出所有行,單獨的“.*”可匹配任意行(包括空行):
輸出/etc/passwd文件內“r”開頭且以“nologin”結尾的用戶記錄,即中間可以是任意字符:
6)元字符 {} —— 限定出現的次數范圍
創建一個練習用的測試文件:
輸出包括ababab的行,即“ab”連續出現3次:
輸出包括abab、ababab、abababab的行,即“ab”連續出現2~4次:
輸出包括ababab、abababab、……的行,即“ab”最少連續出現3次:
7)元字符 [] —— 匹配范圍內的單個字符
還以前面的測試文件bracet.txt為例:
輸出包括abc、abd的行,即前兩個字符為“ab”,第三個字符只要是c、d中的一個就符合條件:
輸出包括大寫字母的行,使用[A-Z]匹配連續范圍:
8)單詞邊界匹配
以文件/etc/rc.local為例:
輸出包括單詞“init”的行,文件中“initialization”不合要求:
或者:
輸出包括以“ll”結尾的單詞的行,使用 匹配單詞右邊界:
或者:
9)多個條件的組合
通過dmesg啟動日志查看藍牙設備、網卡設備相關的信息:
網站題目:linux過濾命令怎么用,linux日志查看過濾命令
鏈接地址:http://vcdvsql.cn/article36/hsespg.html
成都網站建設公司_創新互聯,為您提供網站內鏈、網站設計、網站改版、網站制作、手機網站建設、網站排名
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯