shell三劍客之sed

2021-10-05 03:45:19 字數 2824 閱讀 1669

sed  [options] pattern  filename
引數說明:

-e 多點編輯

-f 從指定檔案中讀取編輯

-i.bak 備份,並對內容進行修改

-n 取消自動列印

-r 支援使用擴充套件正規表示式

-v 顯示版本資訊

-h 顯示幫助

動作說明:

動作前面通常加一些匹配項

a 新增, a 後面可以接字串,而這些字串會在新的一行出現(目前的下一行)

c 取代, c 後面可以接字串,這些字串可以取代 n1,n2 之間的行

d 刪除, d 通常後面不接任何咚咚

i 插入, i 後面可以接字串,而這些字串會在新的一行出現(目前的上一行)

p 列印, p 通常會與引數 sed -n 一起執行

s 取代, s 通常可以搭配正規表示法,例如 1,20s/old/new/g

= 顯示匹配的行號

! 取反

1.列印顯示文字內容

sed -n '3p' test.sh             # 列印檔案的第3行

sed -n '$p' test.sh        # 列印檔案的最後一行

sed -n '3,6p' test.sh      # 列印檔案的第3行到第6行

sed -n '3,$p' test.sh      # 列印檔案的第3行到最後一行的內容

sed -n '3~2p' test.sh      # 從第3行開始,每隔兩行列印一行,波浪號後面的2表示步長

sed -n '/love/p' test.sh    # 列印匹配love的行

sed -n '/love/,3p' test.sh  # 列印從匹配love的行到第3行的內容,及後面所有匹配love的行

sed -n '/love/,$p' test.sh  # 列印從匹配love的行到最後一行的內容

sed -n '/love/,+1p' test.sh    # 列印匹配love的行及其向後一行,如果有多行匹配love,則匹配的每一行都會向後多列印一行

sed -n '/love/,/you/p' test.sh  # 列印從匹配內容love到匹配內容you的行

sed -n '3,/love/p' test.sh  # 列印第三行到匹配love的行

sed -n "$=" test.sh # 列印test.s**件最後一行的行號

sed -n '/error/=' test.sh    # 列印匹配error的行的行號

sed -n '/error/' test.sh # 列印匹配error的行的行號和內容(可用於檢視日誌中有error的行及其內容)

2.增加檔案內容,向檔案中新增或插入行

sed '3apython' test.sh       # 在第三行後面新增python,3表示行號

sed '3ipython' test.sh # 在第三行之前插入python,3表示行號

sed '$apython' test.sh # 在最後一行之後新增python

sed '$ipython' test.sh # 在最後一行之前插入python

sed '/123/apython' test.sh # 在包含123的行後面新增python,如果檔案中有多行包括123,則每一行後面都會新增

sed '/123/ipython' test.sh # 在包含123的行之前插入python,如果檔案中有多行包含123,則每一行之前都會插入

3.刪除檔案中指定的行

sed '3d' 1.txt            # 刪除第三行

sed '$d' 1.txt       # 刪除最後一行

sed '1~2d' 1.txt     # 從第一行開始刪除,每隔2行就刪掉一行,即刪除奇數行

sed '1,3d' 1.txt    # 刪除1~3行

sed '1,3!d' 1.txt   # 刪除1~3之外的所有行

sed '/123/d' 1.txt       # 刪除匹配123的行

sed '/123/,$d' 1.txt      # 刪除從匹配123的行到最後一行

sed '/123/,+1d' 1.txt     # 刪除匹配123的行及其後面一行

sed '/^$/d'  1.txt       # 刪除空行

sed '/123\|abc/!d' 1.txt  # 刪除不匹配123或abc的行,/123\|abc/ 表示匹配123或abc ,!表示取反

4.更改檔案中指定的行

sed '1chello' test.sh         # 將檔案的第一行替換為hello  

sed '$chello' test.sh         # 將檔案的最後一行替換為hello

sed '/123/chello' test.sh     # 將包含123的行替換為hello

shell三劍客之sed

sed命令是文字處理工具,讀取文字內容,根據指定的條件進行處理,對檔案內容進行增刪改查,常與正規表示式進行相互配合使用。他是一種流編輯器,一次處理一行內容。處理時,把當前處理的行儲存在臨時緩衝區中,稱為 模式空間 pattern space 接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的...

shell 三劍客(sed)用法

shell 三劍客 sed用法 string edit 流編輯器 sed 兩個空間 模式空間,保持空間 模式空間 sed處理文字內容行的乙個臨時緩衝區,模式空間中的內容會主動列印到標準輸出,並自動清空模式空間 保持空間 sed處理文字內容行的另乙個臨時緩衝區,不同的是保持空間內容不會主動清空,也不會...

Shell 指令碼三劍客之 sed詳解

shell指令碼三劍客,awk grep sed sed是乙個很好的檔案處理工具,本身是乙個管道命令,主要是以行為單位進行處理,可以將資料行進行替換 刪除 新增 選取等特定工作,下面先了解一下sed的用法 sed命令列格式為 sed nefri command 輸入文字 常用選項 n 使用安靜 si...