非互動的編輯器之sed

2021-08-20 19:35:32 字數 3992 閱讀 1801

注:sed 是逐行處理的

sed文字處理工具的用法:

用法1:前置命令|sed[選項]'條件指令'

用法2:sed[選項]'條件指令' 檔案....

下面是介紹一些選項和基本用法

sed命令的常用選項如下:

-n(遮蔽預設輸出,預設sed會輸出讀取文件的全部內容)

-r(讓sed支援擴充套件正則)/正則/

-i(sed直接修改原始檔,預設sed只是通過記憶體臨時修改檔案,原始檔無影響)

sed 的常用條件指令

p 列印

d 刪除 

s/old/new/ 替換   也可用來做一些字串的刪除

下面介紹一下具體的用法

指令p

[root@svr5~]# sed '1p'

/etc/hosts 列印檔案的第一行 但由於沒有加-n選項所以缺省會列印整個檔案

127.0.0.1localhost localhost.localdomain localhost4 localhost4.localdomain4

127.0.0.1localhost localhost.localdomain localhost4 localhost4.localdomain4

::1localhost localhost.localdomain localhost6 localhost6.localdomain6

[root@svr5~]# sed-n '1p'

/etc/hosts 列印檔案的第一行 (遮蔽預設輸出)

127.0.0.1localhost localhost.localdomain localhost4 localhost4.localdomain4

01.[root@svr5~]# sed-n

'3,5p'

/etc/

passwd 列印第3到5行

[root@svr5~]# sed-n '3p;5p'

/etc/passwd 列印第3和5行

[root@svr5~]# sed-n '3,+10p'

/etc/passwd 列印第3以及後面的10行

[root@svr5~]# sed-n '1~2p'

/etc/passwd 列印奇數行 【這裡就是列印 1 1+2 1+2+2......】

[root@svr5~]# sed-n '2~2p'

/etc/passwd 列印偶數行

[root@svr5~]# sed-n

'$=' /etc/passwd 輸出檔案的行數

d 指令同p指令 測試時可不加-n選項可以直**出效果

s/old/new/ 替換指令

[root@svr5~]# vim test.txt             //新建素材

201720112018201720172024201720172017

[root@svr5~]# sed 's/2017/***x/' test.txt 把每行的第乙個2017替換成***x

[root@svr5~]# sed 's/2017/***x/g' test.txt 把每行所有的2017替換成***x

[root@svr5~]# sed 's/2017/***x/2' test.txt 把每一行的第二個2017替換成***x

[root@svr5~]# sed 's/2017//2' test.txt 刪除每一行的第二個2017

下面介紹一下sed的一些正則用法

[root@svr5~]#   sed -n   '/^root/p' /etc/passwd         找出以root開頭的並列印

[root@svr5~]#   sed  -n   '/bash$/p' /etc/passwd          找出以bash結尾的並列印

[root@svr5~]#   sed    's#/bin/bash#/sbin/sh#'   /etc/passwd      將/bin/bash替換成/sbin/sh     【這裡相當於s#old#new#】

[root@svr5~]# cat nssw.txt 新建素材

hello the world

ni hao ma beijing

[root@svr5~]# sed 's/.//2 ; s/.$//' nssw.txt

刪除檔案中每行的第二個、最後乙個字元分兩次替換操作,第一次替換掉第2個字元,第二次替換掉最後乙個字元

[root@svr5~]# sed-r 's/^(.)(.*)(.)$/\3\2\1/' nssw.txt 將檔案中每行的第乙個、倒數第1個字元互換

將每行文字拆分為「第1個字元」、「中間的所有字元」、「倒數第1個字元」三個部分,然後通過替換操作重排順序為「3-2-1」

[root@svr5~]# sed 's/([a-z])/[\1]/g' nssw.txt 為檔案中每個大寫字母新增括號使用 「()」可實現保留功能

注:1.正則的用法用法還有很多就不一 一枚舉了具體可以按實際的要求操作sed預設不支援擴充套件正則所以使用擴充套件正則時需加-r選項   

2.建議在使sed修改檔案是先不要加-i選項測試無誤後方可加上-i選項

linux之SED行編輯器

n 靜默模式,不再預設顯示模式空間中的內容 i 直接修改原檔案 e script e script 可以同時執行多個指令碼 f path to sed script r 表示使用擴充套件正規表示式 d 刪除符合條件的行 p 顯示符合條件的行 a string 在指定的行後面追加新行,內容為strin...

Shell指令碼之Sed編輯器

插入sed是一種流編輯器,流編輯器會在編輯器處理資料之前基於預先提供的一組規則來編輯資料流。可以根據命令來處理資料流中的資料,這些命令要麼從命令列中輸入,要麼儲存在乙個命令文字檔案中。主要包括讀取 執行和顯示三個過程。sed e 操作 檔案1 檔案2 sed n e 操作 檔案1 檔案2 sed f...

sed編輯器 二

更改行 工作方式與插入命令相同。1 sed 3c this is a test.更改第三行中的文字。2 sed number 3 c this is a changed line of text.fiel 定址匹配文字模式 3 sed 2,3c this is a new line of text....