校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 在Linux上使用GNU sed的方法

在Linux上使用GNU sed的方法

熱門標(biāo)簽:百度地圖標(biāo)注開鎖電話 依蘭縣地圖標(biāo)注app 山東企業(yè)電銷機(jī)器人價(jià)格 pageadm實(shí)現(xiàn)地圖標(biāo)注 安陽百應(yīng)電銷機(jī)器人加盟 琿春市地圖標(biāo)注app 潮州地圖標(biāo)注 公司400電話辦理價(jià)格 百度中國地圖標(biāo)注中心

Linux 基金會宣布了一個全新的 LFCS(Linux 基金會認(rèn)證系統(tǒng)管理員(Linux Foundation Certified Sysadmin))認(rèn)證計(jì)劃。這一計(jì)劃旨在幫助遍布全世界的人們獲得其在處理 Linux 系統(tǒng)管理任務(wù)上能力的認(rèn)證。這些能力包括支持運(yùn)行的系統(tǒng)服務(wù),以及第一手的故障診斷、分析,以及為工程師團(tuán)隊(duì)在升級時(shí)提供明智的決策。

處理 Linux 中的文本流

Linux 將程序中的輸入和輸出當(dāng)成字符流或者字符序列。在開始理解重定向和管道之前,我們必須先了解三種最重要的I/O(輸入和輸出(Input and Output))流,事實(shí)上,它們都是特殊的文件(根據(jù) UNIX 和 Linux 中的約定,數(shù)據(jù)流和外圍設(shè)備(設(shè)備文件)也被視為普通文件)。

在 > (重定向操作符) 和 | (管道操作符)之間的區(qū)別是:前者將命令與文件相連接,而后者將命令的輸出和另一個命令相連接。

# command >file

# command1 | command2

由于重定向操作符會靜默地創(chuàng)建或覆蓋文件,我們必須特別小心謹(jǐn)慎地使用它,并且永遠(yuǎn)不要把它和管道混淆起來。在 Linux 和 UNIX 系統(tǒng)上管道的優(yōu)勢是:第一個命令的輸出不會寫入一個文件而是直接被第二個命令讀取。

在下面的操作練習(xí)中,我們將會使用這首詩——《A happy child》(作者未知)

使用 sed

sed 是流編輯器(stream editor)的縮寫。為那些不懂術(shù)語的人額外解釋一下,流編輯器是用來在一個輸入流(文件或者管道中的輸入)執(zhí)行基本的文本轉(zhuǎn)換的工具。

sed 最基本的用法是字符替換。我們將通過把每個出現(xiàn)的小寫 y 改寫為大寫 Y 并且將輸出重定向到 ahappychild2.txt 開始。g 標(biāo)志表示 sed 應(yīng)該替換文件每一行中所有應(yīng)當(dāng)替換的實(shí)例。如果這個標(biāo)志省略了,sed 將會只替換每一行中第一次出現(xiàn)的實(shí)例

基本語法:

#sed's/term/replacement/flag'file

我們的樣例:

#sed's/y/Y/g' ahappychild.txt > ahappychild2.txt

如果你要在替換文本中搜索或者替換特殊字符(如 /,\,&),你需要使用反斜杠對它進(jìn)行轉(zhuǎn)義。

例如,我們要用一個符號來替換一個文字,與此同時(shí)我們將把一行最開始出現(xiàn)的第一個 I 替換為 You。

#sed's/and/\/g;s/^I/You/g' ahappychild.txt

在上面的命令中,眾所周知 ^(插入符號)是正則表達(dá)式中用來表示一行開頭的符號。

正如你所看到的,我們可以通過使用分號分隔以及用括號包裹來把兩個或者更多的替換命令(并在它們中使用正則表達(dá)式)連接起來。

另一種 sed 的用法是顯示或者刪除文件中選中的一部分。在下面的樣例中,將會顯示 /var/log/messages 中從6月8日開始的頭五行。

#sed-n '/^Jun 8/ p'/var/log/messages |sed-n 1,5p

請注意,在默認(rèn)的情況下,sed 會打印每一行。我們可以使用 -n 選項(xiàng)來覆蓋這一行為并且告訴 sed 只需要打?。ㄓ?p來表示)文件(或管道)中匹配的部分(第一個命令中指定以“Jun 8” 開頭的行,第二個命令中指定一到五行)。

最后,可能有用的技巧是當(dāng)檢查腳本或者配置文件的時(shí)候可以保留文件本身并且刪除注釋。下面的單行 sed 命令刪除(d)空行或者是開頭為#的行(| 字符對兩個正則表達(dá)式進(jìn)行布爾 OR 操作)。

#sed'/^#\|^$/d' apache2.conf

uniq 命令

uniq 命令允許我們返回或者刪除文件中重復(fù)的行,默認(rèn)寫到標(biāo)準(zhǔn)輸出。我們必須注意到,除非兩個重復(fù)的行相鄰,否則uniq 命令不會刪除他們。因此,uniq 經(jīng)常和一個前置的 sort 命令(一種用來對文本行進(jìn)行排序的算法)搭配使用。默認(rèn)情況下,sort 使用第一個字段(用空格分隔)作為關(guān)鍵字段。要指定一個不同的關(guān)鍵字段,我們需要使用 -k 選項(xiàng)。

樣例

du –sch /path/to/directory/* 命令將會以人類可讀的格式返回在指定目錄下每一個子文件夾和文件的磁盤空間使用情況(也會顯示每個目錄總體的情況),而且不是按照大小輸出,而是按照子文件夾和文件的名稱。我們可以使用下面的命令來讓它通過大小排序。

#du-sch /var/* | sort -h

你可以通過使用下面的命令告訴 uniq 比較每一行的前6個字符(-w 6)(這里是指定的日期)來統(tǒng)計(jì)日志事件的個數(shù),而且在每一行的開頭輸出出現(xiàn)的次數(shù)(-c)。

#cat/var/log/mail.log |uniq-c -w6

上一頁12 下一頁 閱讀全文

標(biāo)簽:晉中 呼和浩特 連云港 公主嶺 林芝 常德 三明 香港

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《在Linux上使用GNU sed的方法》,本文關(guān)鍵詞  在,Linux,上,使用,GNU,sed,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《在Linux上使用GNU sed的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于在Linux上使用GNU sed的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 资兴市| 林甸县| 神池县| 江都市| 池州市| 鄂温| 武穴市| 苗栗县| 偃师市| 瓮安县| 张家港市| 永城市| 额尔古纳市| 娄烦县| 景泰县| 高陵县| 南靖县| 甘肃省| 黎城县| 竹山县| 阿拉善左旗| 武鸣县| 黎平县| 潢川县| 新竹市| 张北县| 中山市| 岳池县| 腾冲县| 青岛市| 宜宾县| 峡江县| 青州市| 古浪县| 彰化市| 新绛县| 太和县| 会泽县| 哈巴河县| 泰安市| 桃江县|