流式編輯器,可以實現非互動式的文件增、刪、改、查動作,預設是對文件進行逐行處理的。配合正規表示式能夠實現更加準確的定位與修改。
常用指令為:
p列印輸出、d刪除和s替換
格式:1.前置命令(需要能夠生成文字的) | sed -選項 (定址符)指令
2.sed -選項 (定製符)指令 目標文件
條件可以是行號或者/正則/
沒有條件時,預設為所有條件
指令可以是增、刪、改、查等指令
預設sed會將所有輸出的內容都列印出來,可以使用-n遮蔽預設輸出
選項中可以使用-r選項,讓sed支援擴充套件正則
常用選項
實際應用
~]# sed '1p' /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
通過在p前新增定址符,可以實現精確定位需要執行操作的文字行,如列印第一行小括號內輸入的是『1p』。一般p輸出指令會配合-n選項取消預設輸出使用,不加的話就會在列印第一行文字的基礎上,再輸出整個文件的內容,我們一般只需要看我們選擇輸出的行的內容就夠了。
~]# sed -n '3,6p' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
也可以是連續的行。
~]# sed -n 『1~2p』 /etc/passwd #從第1行開始,跳兩行看一次,即看奇數行
也可以是不連續的行。
對於定位到某目標行的操作與指令p類似,但因為涉及對文件內容的修改,需要注意-i選項。正常情況下,sed命令所做的處理只是把操作結果(包括列印、刪除等)輸出到當前終端螢幕,而並不會對原始檔案做任何更改。
~]# sed -i '1,4d' test.txt #新增-i選項可對文件內容進行實際修改
~]# sed 's/2017/***x/' test.txt #將文件每行匹配到的第乙個2017替換成「***x」
t]# sed '3s/2017/***x/ test.txt #替換文件的第三行的2017為「***x」
~]# sed 's/2017/***x/g' test.txt #末尾的g新增是所有替換的意思,即將文件內所有的2017都換成「***x」
在實際應用中,需求可能是千變萬化的,某行或者某些行的模糊定位很難能夠滿足定位需要,使用正規表示式能夠很好的解決這一問題。
~]# sed -n '/root/p' /etc/passwd #在/etc/passwd中列印有「root」字元的行
~]# sed -n '/bash$/p' /etc/passwd #在/etc/passwd中列印以「bash」字元結尾行
~]# sed '/xml/!d' a.txt #刪除不包含xml的行,!符號表示取反
(給大寫字母加上括號)
~]# sed -r 's/([a-z])/(\1)/g' hello.txt
(h)ello the (w)orld
ni hao (m)a bei(j)ing
(首尾字元互換)
]# sed -r 's%^(.)(.*)(.)$%\3\2\1%' hello.txt
dello the worlh
gi hao ma beijinn
以上僅僅是正規表示式的簡單應用,sed與正規表示式還有更多的應用配合,有興趣的朋友可以去作更深入的了解。 sed的一些應用
sed 在滲透的時候很有作用 具體如下 以下命令將a.txt文字中的所有的 127.0.0.1 替換為 192.168.0.8 sed i s 127.0.0.1 192.168.0.8 g a.txt 如果不想改動原檔案a.txt,則可以用以下命令生成新檔案new.txt sed e s 127....
sed的一些應用
1.sed 使用變數進行替換,注意使用引數 r 時,需要放在引數 i 的前面 下面這個例子是用2.txt中的版本號替換docker compose.yml中的版本號,其中變數upgrade name在兩個檔案中都有且一樣 for line in cat 2.txt do upgrade name e...
日期類的建立和一些基本應用。
includeusing namespace std class date 拷貝建構函式,使用類建立新類。date const date d year d.year month d.month day d.day 輸出符號的過載。ostream operator 賦值的過載。date operato...