天天看點

軟體測試|Linux三劍客之sed指令詳解

作者:測試者穆勒
軟體測試|Linux三劍客之sed指令詳解

簡介

sed(Stream Editor)是一款流式文本編輯器,在 Linux 和類 Unix 系統中廣泛使用。它的設計目的是用于對文本進行處理和轉換,可以用于替換、删除、插入、列印等操作。sed 指令通過逐行處理文本,允許您使用簡單的指令來編輯大量文本資料。本文将詳細介紹 sed 指令的基本用法和一些常見的編輯操作。

基本文法

sed 指令的基本文法如下:

bash複制代碼sed [options] 'command' input_file
           
  • options:可選參數,用于指定 sed 指令的行為。
  • 'command':用于指定編輯操作的指令,可以是單個指令或多個指令的組合。
  • input_file:要處理的輸入檔案名。

常用參數

下面是一些常見的 sed 指令選項:

  • -e:允許在指令行中指定多個編輯指令。
  • -i:直接在輸入檔案中進行編輯(原地編輯),而不是在标準輸出上列印結果。
  • -n:禁止預設輸出,隻列印被處理的文本。

使用示例

下面是一些常用的 sed 指令:

  1. 替換文本
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
           
  1. 全局替換
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
           
  1. 替換特定行
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
           
  1. 删除特定行
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
           
  1. 插入文本
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 指令中使用正規表達式來比對文本并進行編輯操作。

  1. 替換檔案中的所有 "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"。

  1. 删除包含 "banana" 的行:
bash複制代碼sed '/banana/d' fruits.txt

#######
apple
APPLE
BANANA
ORANGE
orange
grape
Grape
good
Good
apple
orange
orange
orange
           

此指令将從 fruits.txt 檔案中删除所有包含 "banana" 的行。

  1. 在檔案開頭插入标題:
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 指令處理和轉換文本。

擷取更多技術資料,請點選!> 霍格沃茲測試開發學社|免費學習資料大放送,助你事半功倍! - 公衆号 - 測試人社群