天天看點

shell程式設計——sed文本操作入門

sed說明

vim可編輯文本,Shell腳本中無法使用vim

sed指令可對文本進行更改、删除、添加、列印,可以直接修改文本檔案

示例文本檔案/tmp/jackin.txt

Port 22 Port 22 Port 22

PermitRootLogin yes

Port 22

PasswordAuthentication yes

ListenAddress 10.175.201.36

sedsedsed

//note

nouse

sed文法

sed '過濾+動作' 檔案路徑

sed過濾

預設無過濾,每一行都處理

/^Port/ #正則過濾Port

2,$ #指定行數,n代表第n行,$代表最後一行

/PermitRootLogin/,/ListenAddress/ #包含PermitRootLogin的行開始,包含ListenAddress的行結束

sed動作

p 列印動作

a 在行下面添加

i 在行上面添加

d 删除

s/str1/str2/g 全局查找替換,str1替換成st2

s/str1/str2/    查找替換,每行第一次出現的替換

sed列印動作,跟-n結合使用

cat /tmp/jackin.txt | sed -n '/^Port/p'

cat /tmp/jackin.txt | sed -r -n '/^Port+/p' #sed預設不支援擴充正則,sed -r

cat /tmp/jackin.txt |sed -n '3,$p'

cat /tmp/jackin.txt |sed -n '/PermitRootLogin/,/sed/p'

sed添加文本

cat /tmp/jackin.txt | sed 'a jackin' #行後增加

cat /tmp/jackin.txt | sed 'i jackin' #行前增加

cat /tmp/jackin.txt | sed 'a \  jackin' #需要增加空格,使用反斜杠

cat /tmp/jackin.txt|sed '/sedsedsed/a \ jackin add' #過濾加動作

sed删除

cat /tmp/jackin.txt |sed '/^Port/d' #過濾後删除

繼續閱讀