sed
是 “Stream Editor”(流編輯器)的縮寫,它是一款功能強大的實用工具,可讓你在命令列中直接解析和轉換文字。無論你處理的是配置檔案、指令碼還是純文字,sed
都是你快速高效處理文字的得力工具。
sed
的主要用途是搜尋特定的文字模式,並將其替換為其他內容。它還可以刪除或插入行,並執行其他文字轉換。它對於批量編輯檔案或在 shell 指令碼中自動執行各種任務特別有用。
雖然 sed 本身的功能非常多,但它經常與其他 Linux 命令結合使用,如用於文字處理的 awk
、用於規則搜尋的 grep
和用於顯示檔案內容的 cat
。這些工具共同構成了 Linux 環境下強大的文字處理工具包。
sed
命令的一般語法
$ sed [OPTIONS] [FILE]...
echo "Text" | sed 's/Replaceable_Word/The_Word_That_Replaces/'
使用 sed
命令搜尋並替換文字的任何部分。's'
表示搜尋和替換任務。
示例:
比方說,您有一個字串 ” I love CSS
“,您想用 “CSS Libraries
” 替換 “CSS”。
echo "I love CSS" | sed 's/CSS/CSS Libraries/'
I love CSS Libraries
在本例中,echo 命令輸出 ” I love CSS
“,然後 sed 將 ” CSS
” 替換為 ” CSS Libraries
“。最後的輸出結果就是 “I love CSS Libraries
“。
sed '[line] s/harder/easier/g' [file]
sed 命令的 'g'
選項用於替換任何與規則匹配的內容。
示例:
假設您有一個名為 example.txt
的文字檔案,內容如下:
Life is hard. Working harder is the key to success. The harder you work, the luckier you get.
如果要將 example.txt
第 2 行中所有出現的 ” harder
” 一詞替換為 “easier
“,您可以執行:
sed '2 s/harder/easier/g' example.txt
執行該命令後,終端上顯示的輸出將是:
Life is hard. Working easier is the key to success. The harder you work, the luckier you get.
請注意,”harder
” 一詞只在第 2 行被替換為 “easier
“。
如果想將這些更改儲存到檔案中,可以使用 -i
選項:
sed -i '2 s/harder/easier/g' example.txt
執行此命令後, example.txt
的內容將永久更改為:
Life is hard. Working easier is the key to success. The harder you work, the luckier you get.
sed 's/harder/easier/' [file]
該命令只替換搜尋規則的第一個匹配項。
示例:
假設您有一個名為 example.txt
的文字檔案,內容如下:
Life is harder than we think. Working harder is the key to success. No pain, no gain. Work harder.
您可以使用 sed 命令將每一行中的 ” harder
“替換為 “easier
“:
sed 's/harder/easier/' example.txt
執行該命令後,輸出結果將是:
Life is easier than we think. Working easier is the key to success. No pain, no gain. Work easier.
sed '/Something/d' example.txt
使用 sed
命令的 d
選項可以刪除檔案中的任意一行。
示例:
假設您有一個名為 example.txt
的檔案,內容如下:
Hello World Something is here Another line Yet another line Something else
執行命令 sed '/Something/d' example.txt
將輸出結果:
Hello World Another line Yet another line
sed '/Sample/Id' example.txt
sed
命令的 I
選項用於以不區分大小寫的方式搜尋匹配模式。
示例:
假設您有一個名為 example.txt
的檔案,內容如下:
This is a Sample line. Another line. Yet another Sample line. Final line.
執行 sed '/Sample/Id' example.txt
命令將產生以下輸出:
Another line. Final line.
sed 's/\(libraries\)/\U\1/Ig' example.txt
使用 sed
命令的 U
選項可將任何文字轉換為大寫字母。
示例:
假設您有一個名為 example.txt
的檔案,內容如下:
I love libraries. libraries are great. You can find many books in libraries.
執行 sed
命令後,輸出結果將是
I love LIBRARIES. LIBRARIES are great. You can find many books in LIBRARIES.
sed 's/\(libraries\)/\L\1/Ig' example.txt
sed
命令的 L
選項用於將任何文字轉換為小寫字母。
示例:
假設您有一個名為 example.txt
的檔案,內容如下:
Libraries are essential for research. libraries help in many ways. I love LIBRARIES!
執行 sed
命令後,輸出結果將是:
libraries are essential for research. libraries help in many ways. I love libraries!
sed G [file]
使用 sed
命令的 G
選項在檔案的每一行後插入空行。
示例:
假設您有一個名為 example.txt
的檔案,內容如下:
Hello World This Is A Test
您可以執行以下命令,在每行末尾新增一個額外的換行符:
sed G example.txt
執行該命令後,輸出結果將是:
Hello World This Is A Test
sed '=' [file]
=
符號用於在檔案中每行文字前列印行號。
示例:
假設您有一個名為 example.txt
的檔案,內容如下:
Hello World This Is A Test
您可以執行以下命令來列印每行前的行號:
sed '=' example.txt
1 Hello 2 World 3 This 4 Is 5 A 6 Test
下面羅列了最常見的一些 Linux 命令,您可以根據自己的需要查閱對應命令的詳細解析:
目錄操作 | rmdir · cd · pwd · exa · ls |
檔案操作 | cat · cp · dd · less · touch · ln · rename · more · head |
檔案系統操作 | chown · mkfs · locate |
網路 | ping · curl · wget · iptables · mtr |
搜尋和文字處理 | find · grep · sed · whatis · ripgrep · fd · tldr |
系統資訊和管理 | env · history · top · who · htop · glances · lsof |
使用者和會話管理 | screen · su · sudo · open |
此外,我們還整理 Linux 命令列大全,以幫助大家全面深入地學習 Linux。