首頁 系統教程 Linux 簡介:學習LFCS 基礎中sed的使用方法

簡介:學習LFCS 基礎中sed的使用方法

Jan 09, 2024 am 08:50 AM
linux linux教程 紅帽 linux系統 linux指令 linux認證 紅帽linux linux視頻

導讀 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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

vscode需要什麼電腦配置 vscode需要什麼電腦配置 Apr 15, 2025 pm 09:48 PM

VS Code 系統要求:操作系統:Windows 10 及以上、macOS 10.12 及以上、Linux 發行版處理器:最低 1.6 GHz,推薦 2.0 GHz 及以上內存:最低 512 MB,推薦 4 GB 及以上存儲空間:最低 250 MB,推薦 1 GB 及以上其他要求:穩定網絡連接,Xorg/Wayland(Linux)

Linux體系結構:揭示5個基本組件 Linux體系結構:揭示5個基本組件 Apr 20, 2025 am 12:04 AM

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

notepad怎麼運行java代碼 notepad怎麼運行java代碼 Apr 16, 2025 pm 07:39 PM

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

vscode終端使用教程 vscode終端使用教程 Apr 15, 2025 pm 10:09 PM

vscode 內置終端是一個開發工具,允許在編輯器內運行命令和腳本,以簡化開發流程。如何使用 vscode 終端:通過快捷鍵 (Ctrl/Cmd ) 打開終端。輸入命令或運行腳本。使用熱鍵 (如 Ctrl L 清除終端)。更改工作目錄 (如 cd 命令)。高級功能包括調試模式、代碼片段自動補全和交互式命令歷史。

git怎麼查看倉庫地址 git怎麼查看倉庫地址 Apr 17, 2025 pm 01:54 PM

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

vscode 無法安裝擴展 vscode 無法安裝擴展 Apr 15, 2025 pm 07:18 PM

VS Code擴展安裝失敗的原因可能包括:網絡不穩定、權限不足、系統兼容性問題、VS Code版本過舊、殺毒軟件或防火牆干擾。通過檢查網絡連接、權限、日誌文件、更新VS Code、禁用安全軟件以及重啟VS Code或計算機,可以逐步排查和解決問題。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

vscode 可以用於 mac 嗎 vscode 可以用於 mac 嗎 Apr 15, 2025 pm 07:36 PM

VS Code 可以在 Mac 上使用。它具有強大的擴展功能、Git 集成、終端和調試器,同時還提供了豐富的設置選項。但是,對於特別大型項目或專業性較強的開發,VS Code 可能會有性能或功能限制。

See all articles