sed 概述
`sed` 從輸入流中逐行讀取,根據指定的規則(腳本)進行處理,然後將結果發送到標準輸出。原始文件一般不會被修改,若要將更改內容保存到文件中,則需要使用重定向(`>`)或 `-i` 選項。
sed 的主要角色
`sed` 命令主要用於以下目的:
主要應用領域
- 文本替換/置換: 將文件中的特定字符串替換為其他字符串。(最常見的用途)
- 行刪除/添加: 刪除包含特定模式的行,或在特定位置插入新行。
- 模式匹配及輸出: 僅輸出符合特定模式的行,或僅處理特定範圍的行。
- 文件格式變更: 轉換文本文件的格式或重新排列數據。
- 腳本自動化: 在批量處理大量文本文件的 Shell 腳本中發揮核心作用。
sed 的基本結構
`sed` 的基本命令結構為 `sed [OPTIONS] '腳本' [INPUT_FILE...]`。其中 '腳本' 以 `[地址]命令[參數]` 形式表示,而最重要的命令是 `s`(substitute,替換)。
主要 sed 命令選項
`sed` 命令提供了多種選項,以靈活的文本編輯方式處理輸入、指定腳本和控制輸出。
1. 腳本和文件處理選項
2. 替換(s) 命令標誌
3. 其他有用的命令
生成的命令:
請試著組合命令。
這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。
`sed` 執行命令。
請將上述選項組合在一起,與 AI 一同虛擬執行命令。
使用示例
通過 `sed` 命令的多種應用示例,學習如何有效地搜索、替換和刪除文本文件的內容。
將文件內所有 'old' 替換為 'new'
sed 's/old/new/g' example.txt
在 `example.txt` 文件中將所有單詞 'old' 替換為 'new',並將結果顯示到標準輸出。
直接修改原始文件並替換字符串
sed -i.bak 's/DEBUG=true/DEBUG=false/' config.conf
在 `config.conf` 文件中將 'DEBUG=true' 直接更改為 'DEBUG=false',並生成原始文件的備份(`.bak` 擴展名)。
刪除特定行號的行
sed '5d' log.txt
在 `log.txt` 文件中刪除第 5 行並輸出結果。
刪除範圍內的行
sed '10,20d' document.txt
在 `document.txt` 文件中刪除從第 10 行到第 20 行的內容並輸出。
刪除包含特定模式的行
sed '/WARNING/d' errors.log
在 `errors.log` 文件中刪除所有包含 'WARNING' 單詞的行並輸出結果。
在文件內容中插入標題行
sed '1i\Name,Age,City' data.csv
在 `data.csv` 文件的第一行上方插入新的標題行。
刪除空行
sed '/^$/d' text.txt
在 `text.txt` 文件中刪除所有空行。`^$` 是表示空行的正則表達式。