91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux如何使用GNU sed

發布時間:2022-02-18 14:37:59 來源:億速云 閱讀:181 作者:小新 欄目:開發技術

這篇文章主要介紹了Linux如何使用GNU sed,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

流編輯器 是用來從文件讀取文本或者從管道實現基本的變化。結果送到標準輸出。 sed 命令的語法不指定輸出文件,但是結果可以通過使用輸出重定向來寫入到文件中。編輯器并不改變原來的文件。

Linux如何使用GNU sed

處理 Linux 中的文本流

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

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

# command >file# command1 | command2

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

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

Linux如何使用GNU sed

使用 sed

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

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

基本語法:

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

我們的樣例:

#sed's/y/Y/g' ahappychild.txt > ahappychild2.txt
Linux如何使用GNU sed

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

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

#sed's/and/\&/g;s/^I/You/g' ahappychild.txt
Linux如何使用GNU sed

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

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

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

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

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

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

#sed'/^#\|^$/d' apache2.conf
Linux如何使用GNU sed

uniq 命令

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

樣例

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

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


Linux如何使用GNU sed
你可以通過使用下面的命令告訴 uniq 比較每一行的前6個字符(-w 6)(這里是指定的日期)來統計日志事件的個數,而且在每一行的開頭輸出出現的次數(-c)。


#cat/var/log/mail.log |uniq-c -w6
Linux如何使用GNU sed

grep 命令

grep 在文件(或命令輸出)中搜索指定正則表達式,并且在標準輸出中輸出匹配的行。

樣例

顯示文件 /etc/passwd 中用戶 gacanepa 的信息,忽略大小寫。

#grep-i gacanepa /etc/passwd
Linux如何使用GNU sed
如何在 Linux 上使用 GNU sed如何在 Linux 上使用 GNU sed

顯示 /etc 文件夾下所有 rc 開頭并跟隨任意數字的內容。

#ls-l /etc |grep rc[0-9]
Linux如何使用GNU sed

tr 命令使用技巧

tr 命令可以用來從標準輸入中轉換(改變)或者刪除字符,并將結果寫入到標準輸出中。

樣例

把 sortuniq.txt 文件中所有的小寫改為大寫。

#cat sortuniq.txt |tr[:lower:][:upper:]
Linux如何使用GNU sed

壓縮ls –l輸出中的分隔符為一個空格。

#ls-l |tr-s ' '

cut 命令使用方法

cut 命令可以基于字節(-b選項)、字符(-c)或者字段(-f)提取部分輸入(從標準輸入或者文件中)并且將結果輸出到標準輸出。在最后一種情況下(基于字段),默認的字段分隔符是一個制表符,但可以由 -d 選項來指定不同的分隔符。

樣例

從 /etc/passwd 中提取用戶賬戶和他們被分配的默認 shell(-d 選項允許我們指定分界符,-f 選項指定那些字段將被提取)。

#cat/etc/passwd|cut-d:-f1,7
Linux如何使用GNU sed

將以上命令結合起來,我們將使用 last 命令的輸出中第一和第三個非空文件創建一個文本流。我們將使用 grep 作為第一過濾器來檢查用戶 gacanepa 的會話,然后將分隔符壓縮至一個空格(tr -s ‘ ‘)。下一步,我們將使用 cut 來提取第一和第三個字段,最后使用第二個字段(本樣例中,指的是IP地址)來排序之后,再用 uniq 去重。

#last|grep gacanepa |tr-s ‘‘|cut-d’‘-f1,3|sort-k2 |uniq
Linux如何使用GNU sed

上面的命令顯示了如何將多個命令和管道結合起來,以便根據我們的要求得到過濾后的數據。你也可以逐步地使用它以幫助你理解輸出是如何從一個命令傳輸到下一個命令的(順便說一句,這是一個非常好的學習經驗!)

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Linux如何使用GNU sed”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴林右旗| 河南省| 东平县| 新营市| 东城区| 宁南县| 汪清县| 铁力市| 敦煌市| 郸城县| 策勒县| 安福县| 荥经县| 南皮县| 突泉县| 丹江口市| 潼关县| 永济市| 诏安县| 山东省| 定安县| 镶黄旗| 青浦区| 长泰县| 北票市| 家居| 哈密市| 个旧市| 会宁县| 朝阳区| 徐闻县| 肥东县| 宾川县| 肇东市| 海原县| 武城县| 故城县| 阳山县| 西乌珠穆沁旗| 黔西县| 舞钢市|