簡介
sed(Stream Editor)是一款流式文本編輯器,在 Linux 和類 Unix 系統中廣泛使用。它的設計目的是用于對文本進行處理和轉換,可以用于替換、删除、插入、列印等操作。sed 指令通過逐行處理文本,允許您使用簡單的指令來編輯大量文本資料。本文将詳細介紹 sed 指令的基本用法和一些常見的編輯操作。
基本文法
sed 指令的基本文法如下:
bash複制代碼sed [options] 'command' input_file
- options:可選參數,用于指定 sed 指令的行為。
- 'command':用于指定編輯操作的指令,可以是單個指令或多個指令的組合。
- input_file:要處理的輸入檔案名。
常用參數
下面是一些常見的 sed 指令選項:
- -e:允許在指令行中指定多個編輯指令。
- -i:直接在輸入檔案中進行編輯(原地編輯),而不是在标準輸出上列印結果。
- -n:禁止預設輸出,隻列印被處理的文本。
使用示例
下面是一些常用的 sed 指令:
- 替換文本
bash複制代碼sed 's/pattern/replacement/' input_file
上述指令将在input_file 檔案中查找第一個比對的pattern 并替換為 replacement。如我們要将fruits.txt中的APPLE替換為Apple,如下:
bash複制代碼sed 's/APPLE/Apple/' fruits.txt
########
apple
Apple
banana
BANANA
ORANGE
orange
grape
Grape
good
Good
- 全局替換
bash複制代碼sed 's/pattern/replacement/g' input_file
該指令将在 input_file 檔案中查找所有比對的 pattern 并替換為 replacement。比如我們要在fruits.txt中找到所有的orange并替換為peach。
bash複制代碼sed 's/orange/peach/g' fruits.txt
#########
apple
APPLE
banana
BANANA
ORANGE
peach
grape
Grape
good
Good
apple
peach
peach
peach
- 替換特定行
bash複制代碼sed 'ns/pattern/replacement/' input_file
此指令将在input_file 檔案的第 n 行中查找比對的pattern并替換為replacement。比如我們要将第4行的BANANA改為banana。
bash複制代碼sed '4s/BANANA/banana/' fruits.txt
#######
apple
APPLE
banana
banana
ORANGE
orange
grape
Grape
good
Good
apple
orange
orange
orange
- 删除特定行
bash複制代碼sed 'nd' input_file
該指令将删除 input_file 檔案的第 n 行。比如我們要删除fruits.txt的第13行,指令如下:
bash複制代碼sed '13d' fruits.txt
########
apple
APPLE
banana
BANANA
ORANGE
orange
grape
Grape
good
Good
apple
orange
orange
- 插入文本
bash複制代碼sed 'ni\Insert this line' input_file
此指令将在 input_file 檔案的第 n 行之前插入新行 "Insert this line"。比如我們要在fruits.txt的第5号插入mango,指令如下:
bash複制代碼sed '5i\mango' fruits.txt
#########
apple
APPLE
banana
BANANA
mango
ORANGE
orange
grape
Grape
good
Good
apple
orange
orange
orange
sed結合正規表達式
sed 支援強大的正規表達式,可以實作更複雜的模式比對和處理。我們可以在 sed 指令中使用正規表達式來比對文本并進行編輯操作。
- 替換檔案中的所有 "orange":
bash複制代碼sed 's/orange/mango/g' fruits.txt
######
apple
APPLE
banana
BANANA
ORANGE
mango
grape
Grape
good
Good
apple
mango
mango
mango
上述指令将在 fruits.txt 檔案中将所有 "orange" 替換為 "mango"。
- 删除包含 "banana" 的行:
bash複制代碼sed '/banana/d' fruits.txt
#######
apple
APPLE
BANANA
ORANGE
orange
grape
Grape
good
Good
apple
orange
orange
orange
此指令将從 fruits.txt 檔案中删除所有包含 "banana" 的行。
- 在檔案開頭插入标題:
bash複制代碼sed '1i\Title of Fruits' fruits.txt
#######
Title of Fruits
apple
APPLE
banana
BANANA
ORANGE
orange
grape
Grape
good
Good
apple
orange
orange
orange
此指令将在 fruits.txt 檔案的開頭插入一行 "Title of Fruits"。
總結
sed 指令是一款強大的流式文本編輯器,可用于對文本進行替換、删除、插入等操作。通過使用簡單的指令和正規表達式,您可以高效地處理大量文本資料。在本文中,我們介紹了 sed 指令的基本用法和一些常見的編輯操作,希望這能幫助您更好地利用 sed 指令處理和轉換文本。
擷取更多技術資料,請點選!> 霍格沃茲測試開發學社|免費學習資料大放送,助你事半功倍! - 公衆号 - 測試人社群