您好,登錄后才能下訂單哦!
一、sed工作流程
sed 是一種在線的、非交互式的編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用 sed 命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出。
Sed 主要用來自動編輯一個或多個文件;簡化對文件的反復操作;編寫轉換程序等
二、命令格式
sed?[options]?'command'?file(s)????? sed?[options]?-f?scriptfile?file(s)
注:
sed 和 grep 不一樣,不管是否找到指定的模式,它的退出狀態都是 0
只有當命令存在語法錯誤時,sed 的退出狀態才是非 0
三、支持正則表達式
與 grep 一樣,sed 在文件中查找模式時也可以使用正則表達式(RE)和各種元字符。正則表達式是括在斜杠間的模式,用于查找和替換,以下是 sed 支持的元字符。
使用基本元字符集 ^, $, ., *, [], [^], \< \>,\(\),\{\}
使用擴展元字符集 ?, +, { }, |, ( )
使用擴展元字符的方式:
\+
sed -r
四、sed基本用法
常見的命令選項
-e?允許多項編輯 -f?指定?sed?腳本文件名 -n?取消默認的輸出,僅顯示處理后的結果 -i?inplace,就地編輯 -r?支持擴展元字符 -h?顯示幫助
常見的操作
a:增加,在當前行下面增加一行指定內容 c:替換,將選定行替換為指定內容 d:刪除,刪除選定的行 i:插入,在選定行上面插入一行指定內容,忽略大小寫 p:打印,如果同時指定行,表示打印指定行,如果不指定行,則表示打印所有內容;如果有非打印字符,則以ASCII碼輸出。 s:替換,替換指定字符 y:字符轉換 G:取出暫存緩沖區的內容,將其復制到模式空間,追加在原有內容后面 g:取出暫存緩沖區的內容,將其復制到模式空間,覆蓋該處原有內容 x:交換暫存緩沖區與模式空間的內容 r:從文件中讀 w:將行寫入文件
五、sed命令示例
刪除命令:d
#?sed?-r?'3d'?datafile #?sed?-r?'3{d;}'?datafile #?sed?-r?'3aegqsqibtmh'?datafile #?sed?-r?'3,$d'?datafile #?sed?-r?'$d'?datafile #?sed?-r?'/north/d'?datafile? #?sed?-r?'/sout/d'?datafile
替換命令:s
#?sed?-r?'s/west/north/g'?datafile? #?sed?-r?'s/^west/north/'?datafile? #?sed?-r?'s/[0-9][0-9]$/&.5/'?datafile?//&代表在查找串中匹配到的內容 #?sed?-r?'s/Hemenway/Jones/g'?datafile? #?sed?-r?'s/(Mar)got/\1ianne/g'?datafile? #?sed?-r?'s#3#88#g'?datafile
讀取命令:r
#?sed?-r?'/Suan/r?/etc/newfile'?datafile? #?sed?-r?'2r?/etc/hosts'?a.txt? #?sed?-r?'/2/r?/etc/hosts'?a.txt
寫文件命令:w
#?sed?-r?'/north/w?newfile'?datafile? #?sed?-r?'3,$w?/new1.txt'?datafile
追加命令:a
#?sed?-r?'2a\1111111111111'?/etc/hosts #?sed?-r?'2a\1111111111111\ >?222222222222\ >?333333333333'?/etc/hosts
插入命令:i
#?sed?-r?'2i\1111111111111'?/etc/hosts #?sed?-r?'2i111111111\ >?2222222222\ >?3333333333'?/etc/hosts
修改命令:c
#?sed?-r?'2c\1111111111111'?/etc/hosts #?sed?-r?'2c\111111111111\ >?22222222222\ >?33333333333'?/etc/hosts
獲取下一行命令:n
#?sed?-r?'/eastern/{?n;?d?}'?datafile #?sed?-r?'/eastern/{?n;?s/AM/Archile/?}'?datafile
暫存合區用命令:h H g? G
#?sed?-r?'1h;$G'?/etc/hosts #?sed?-r?'1{h;d};$G'?/etc/hosts #?sed?-r?'1h;?2,$g'?/etc/hosts #?sed?-r?'1h;?2,3H;?$G'?/etc/hosts
暫存空間和模式空間互換命令:x
#?sed?-r?'4h;?5x;?6G'?/etc/hosts
反向選擇:!
#?sed?-r?'3d'?/etc/hosts #?sed?-r?'3!d'?/etc/hosts
多重編輯選項:e
#?sed?-r?-e?'1,3d'?-e?'s/Hemenway/Jones/'?datafile? #?sed?-r?'1,3d;?s/Hemenway/Jones/'?datafile? #?sed?-r?'2s/WE/UPLOOKING/g;?2s/Gray/YYY/g'?datafile #?sed?-r?'2{s/WE/UPLOOKING/g;?s/Gray/YYY/g}'?datafile
六、sed常見操作:
刪除配置文件中#號注釋行及空行:
#?sed?-ri?'/^[?\t]*#/d;?/^[?\t]*$/d'?/etc/vsftpd/vsftpd.conf #?sed?-ri?'/^[?\t]*#|^[?\t]*$/d'?/etc/vsftpd/vsftpd.conf #?sed?-ri?'/^[?\t]*($|#)/d'?/etc/vsftpd/vsftpd.conf
修改文件:
#?sed?-ri?'$a\chroot_local_user=YES'?/etc/vsftpd/vsftpd.conf #?sed?-ri?'/^SELINUX=/cSELINUX=disabled'?/etc/selinux/config #?sed?-ri?'/UseDNS/cUseDNS?no'?/etc/ssh/sshd_config #?sed?-ri?'/GSSAPIAuthentication/cGSSAPIAuthentication?no'?/etc/ssh/sshd_config
給文件行添加注釋:
#?sed?-r?'2,6s/^/#/'?a.txt #?sed?-r?'2,6s/(.*)/#\1/'?a.txt #?sed?-r?'2,6s/.*/#&/'?a.txt?&匹配前面查找的內容
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。