導讀 | Linux 基金會認證系統管理員(LFCS)的另一個有用的命令是 “sed”,最初表示“串流編輯器” Streaming EDitor。 |
“sed” 指令是一個可以將檔案當作流進行編輯的編輯器。串流傳輸檔案的方法是從另一個命令使用管道(> 或 |)傳遞,或將其直接載入到 “sed” 中。
該指令的工作方式與其他編輯器相同,只是檔案不顯示,也不允許視覺化編輯。命令被傳遞給 “sed” 來操縱流。
用 “sed” 可以做五件基本的事。當然,「sed」 如此強大,還有其他高級的功能,但你只需要集中精力在五件基本的事上。五種功能類型如下:
搜尋
替換
刪除
添加
改變/變換
在深入命令參數之前,我們需要看看基本的語法。
“sed” 指令的語法是:
sed [选项] 命令 [要编辑的文件]
本文將在適當的部分中介紹這些「選項」。 「命令」可以是正規表示式的搜尋和取代模式。請繼續閱讀了解 “sed” 如何運作的並學習基本命令。正如我之前提到的,「sed」 是一個非常強大的工具,有更多的選項可用,我將在本文中介紹。
範例檔案如果你打開一個終端,那你可以建立一個用於 “sed” 範例的檔案。執行以下命令:
cd ~ grep --help >grephelp.txt
你現在應該在 HOME 資料夾中有一個名為 grephelp.txt 的檔案。該檔案的內容是 grep 指令的幫助說明。
搜尋搜尋特定字串是編輯器的常見功能,在 “sed” 中執行搜尋也不例外。
執行搜尋以在文件中尋找字串。我們來看看基本的搜尋。
如果我們想在範例檔案中搜尋 PATTERN 這個詞,我們將使用以下命令:
sed -n 's/PATTERN/PATTERN/p' grephelp.txt
注意: 如果剪下貼上指令,請確保將單引號替換為鍵盤上的標準單引號。
參數 -n 用於抑制每行的自動列印(除了用 p 指令指定的行)。預設情況下,流入 “sed” 的每一行將會列印到標準輸出(stdout)。如果你不使用 “-n” 選項運行上述命令,你將看到原始文件的每一行以及匹配的行。
要搜尋的檔案名稱是我們在「範例檔案」部分中建立的 “grephelp.txt”。
剩下的部分是 's/PATTERN/PATTERN/p' 。這一段基本分為四個部分。第一部分的 s 指定執行替換,或搜尋並替換。
剩下的第二部分和第三部分是模式。第一個是要搜尋的模式,最後一個是替換流中匹配字串的模式。此例中,我們找到字串 PATTERN,並用 PATTERN 取代。透過尋找和替換相同的字串,我們完全不會更改文件,甚至在螢幕上也一樣。
最後一個指令是 p。它指定在替換後列印新行。當然,因為替換的是相同的字串,所以沒有改變。由於我們使用 -n 參數抑制列印行,所以更改的行將使用 p 命令列印。
這個完整的命令允許我們執行搜尋並查看匹配的結果。
替換當搜尋特定字串時,你可能想要用匹配的字串取代新字串。用另一個字串替換是很常見的操作。
我們可以使用以下命令執行相同的搜尋:
sed -n 's/PATTERN/Pattern/p' grephelp.txt
在這時,字串 “PATTERN” 變成 “Pattern” 並顯示。如果你使用指令 cat grephelp.txt 查看文件,你會看到該文件沒有更改。此變更僅對螢幕上的輸出進行。你可以使用以下命令將輸出透過管道傳輸到另一個檔案:
sed 's/PATTERN/Pattern/' grephelp.txt > grephelp1.txt
現在將存在一個名為 grephelp1.txt 的新文件,其中保存了更改的文件。如果 p 作為第四個選項留下,那麼有個問題是被替換的字串的每一行將在檔案中重複兩次。我們也可以刪除 “-n” 參數以允許所有的行列印。
使用相同字串替換字串的另一種方法是使用 & 符號來表示搜尋字串。例如,指令 s/PATTERN/&/p 效果是一樣的。我們可以新增字串,例如新增 S,可以使用指令 s/PATTERN/&S/p。
如果我們希望在每一行中只取代某種模式呢?可以指定要替換的匹配項的特定出現。當然,每一行的替換都是特定的編號。例如,範例文件上有許多破折號。有些行至少有兩個破折號,所以我們可以用另一個字元來代替每一行的第二個破折號。每行用星號 * 取代第二個破折號 - 的指令將是:
sed 's/-/*/2' grephelp.txt
在這裡,我們用最初的 s 來執行替換。字元 - 被替換為 *。 2 表示我們想要替換每行上的第二個 -(如果存在)。如果我們忽略了指令 2,則替換第一次出現的破折號。只有第一個破折號而不是每行的破折號都被替換。
如果要搜尋並取代帶有星號的行上的所有破折號,請使用 g 指令:
sed 's/-/*/g' grephelp.txt
指令也可以組合。假設你想要替換從第二次開始出現的破折號,指令將是:
sed 's/-/*/2g' grephelp.txt
现在从第二个开始出现的破折号将被星号取代。
删除搜索过程中有很多时候你可能想要完全删除搜索字符串。
例如,如果要从文件中删除所有破折号,你可以使用以下命令:
sed 's/-//g' grephelp.txt
替换字符串为空白,因此匹配的字符串将被删除。
添加当找到匹配时,你可以添加一行特定的文本,来使这行在浏览或打印中突出。
如果要在匹配后插入新行,那么使用 a 命令,后面跟上新行的字符串。还包括要匹配的字符串。例如,我们可以找到一个 --,并在匹配的行之后添加一行。新行的字符串将是 double dash before this line。
sed '/--/ a "double dash before this line"' grephelp.txt
如果要在包含匹配字符串的行之前加上这行,请使用 i 命令,如下所示:
sed '/--/ i "double dash after this line"' grephelp.txt改变/变换
如果需要改变/变换一行,则可以使用命令 c。
假设我们有个有一些私人信息的文档,我们需要更改包含特定字符串的行。c 命令将改变整行,而不仅仅是搜索字符串。
假设我们想要阻止示例文件中包含单词 PATTERN 的每一行。更改的行将显示为 This line is Top Secret。命令是:
sed '/PATTERN/ c This line is Top Secret' grephelp.txt
可以进行更改特定字母的大小写的转换。例如,我们可以使用命令 y 将所有小写 a 更改为大写 A,如下所示:
sed 'y/a/A/' grephelp.txt
可以指定多个字母,如 abdg,如下命令所示:
sed 'y/abdg/ABDG/' grephelp.txt
确保第二组字母与第一组字母的顺序相同,否则会被替换和转换。例如,字符串 y/a/D/ 将用大写 D 替换所有小写的 a。
就地更改如果你确实要更改所使用的文件,请使用 -i 选项。
例如,要将 PATTERN 改为 Pattern,并对文件进行更改,则命令为:
sed -i 's/PATTERN/Pattern/' grephelp.txt
现在文件 grephelp.txt 将被更改。-i 选项可以与上述任何命令一起使用来更改原始文件的内容。
练习这些命令,并确保你理解它们。“sed” 命令非常强大。
(题图:Pixabay,CC0)
以上是簡介:學習LFCS 基礎中sed的使用方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

介紹 Linux是一個強大的操作系統,由於其靈活性和效率,開發人員,系統管理員和電源用戶都喜歡。但是,經常使用長而復雜的命令可能是乏味的

Linux適用於服務器、開發環境和嵌入式系統。 1.作為服務器操作系統,Linux穩定高效,常用於部署高並發應用。 2.作為開發環境,Linux提供高效的命令行工具和包管理系統,提升開發效率。 3.在嵌入式系統中,Linux輕量且可定制,適合資源有限的環境。

簡介:通過基於Linux的道德黑客攻擊數字邊界 在我們越來越相互聯繫的世界中,網絡安全至關重要。 道德黑客入侵和滲透測試對於主動識別和減輕脆弱性至關重要

Linux基礎學習從零開始的方法包括:1.了解文件系統和命令行界面,2.掌握基本命令如ls、cd、mkdir,3.學習文件操作,如創建和編輯文件,4.探索高級用法如管道和grep命令,5.掌握調試技巧和性能優化,6.通過實踐和探索不斷提陞技能。

Linux在服務器、嵌入式系統和桌面環境中的應用廣泛。 1)在服務器領域,Linux因其穩定性和安全性成為託管網站、數據庫和應用的理想選擇。 2)在嵌入式系統中,Linux因其高度定制性和高效性而受歡迎。 3)在桌面環境中,Linux提供了多種桌面環境,滿足不同用戶需求。

Linux的缺點包括用戶體驗、軟件兼容性、硬件支持和學習曲線。 1.用戶體驗不如Windows或macOS友好,依賴命令行界面。 2.軟件兼容性不如其他系統,缺乏許多商業軟件的原生版本。 3.硬件支持不如Windows全面,可能需要手動編譯驅動程序。 4.學習曲線較陡峭,掌握命令行操作需要時間和耐心。

Linuxisnothardtolearn,butthedifficultydependsonyourbackgroundandgoals.ForthosewithOSexperience,especiallycommand-linefamiliarity,Linuxisaneasytransition.Beginnersmayfaceasteeperlearningcurvebutcanmanagewithproperresources.Linux'sopen-sourcenature,bas

Linux的五個基本組件是:1.內核,管理硬件資源;2.系統庫,提供函數和服務;3.Shell,用戶與系統交互的接口;4.文件系統,存儲和組織數據;5.應用程序,利用系統資源實現功能。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Atom編輯器mac版下載
最受歡迎的的開源編輯器

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器