溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

文件處理器——sed

發(fā)布時間:2020-08-03 17:04:52 來源:網(wǎng)絡(luò) 閱讀:281 作者:wx5d3fd1efe40e3 欄目:開發(fā)技術(shù)

一、sed工作流程

文件處理器——sed

sed 是一種在線的、非交互式的編輯器,它一次處理一行內(nèi)容。處理時,把當(dāng)前處理的行存儲在臨時緩沖區(qū)中,稱為“模式空間”(pattern space),接著用 sed 命令處理緩沖區(qū)中的內(nèi)容,處理完成后,把緩沖區(qū)的內(nèi)容送往屏幕。接著處理下一行,這樣不斷重復(fù),直到文件末尾。文件內(nèi)容并沒有改變,除非你使用重定向存儲輸出。

Sed 主要用來自動編輯一個或多個文件;簡化對文件的反復(fù)操作;編寫轉(zhuǎn)換程序等

二、命令格式

sed?[options]?'command'?file(s)?????
sed?[options]?-f?scriptfile?file(s)

注:

sed 和 grep 不一樣,不管是否找到指定的模式,它的退出狀態(tài)都是 0

只有當(dāng)命令存在語法錯誤時,sed 的退出狀態(tài)才是非 0

三、支持正則表達(dá)式

與 grep 一樣,sed 在文件中查找模式時也可以使用正則表達(dá)式(RE)和各種元字符。正則表達(dá)式是括在斜杠間的模式,用于查找和替換,以下是 sed 支持的元字符。

使用基本元字符集 ^, $, ., *, [], [^], \< \>,\(\),\{\}

使用擴(kuò)展元字符集 ?, +, { }, |, ( )

使用擴(kuò)展元字符的方式:

\+

sed -r

四、sed基本用法

常見的命令選項

-e?允許多項編輯
-f?指定?sed?腳本文件名
-n?取消默認(rèn)的輸出,僅顯示處理后的結(jié)果
-i?inplace,就地編輯
-r?支持?jǐn)U展元字符
-h?顯示幫助

常見的操作

a:增加,在當(dāng)前行下面增加一行指定內(nèi)容
c:替換,將選定行替換為指定內(nèi)容
d:刪除,刪除選定的行
i:插入,在選定行上面插入一行指定內(nèi)容,忽略大小寫
p:打印,如果同時指定行,表示打印指定行,如果不指定行,則表示打印所有內(nèi)容;如果有非打印字符,則以ASCII碼輸出。
s:替換,替換指定字符
y:字符轉(zhuǎn)換
G:取出暫存緩沖區(qū)的內(nèi)容,將其復(fù)制到模式空間,追加在原有內(nèi)容后面
g:取出暫存緩沖區(qū)的內(nèi)容,將其復(fù)制到模式空間,覆蓋該處原有內(nèi)容
x:交換暫存緩沖區(qū)與模式空間的內(nèi)容
r:從文件中讀
w:將行寫入文件

五、sed命令示例

刪除命令:d

#?sed?-r?'3d'?datafile
#?sed?-r?'3{d;}'?datafile
#?sed?-r?'3bynnoca'?datafile
#?sed?-r?'3,$d'?datafile
#?sed?-r?'$d'?datafile
#?sed?-r?'/north/d'?datafile?
#?sed?-r?'/sout/d'?datafile

文件處理器——sed

替換命令:s

#?sed?-r?'s/west/north/g'?datafile?
#?sed?-r?'s/^west/north/'?datafile?
#?sed?-r?'s/[0-9][0-9]$/&.5/'?datafile?//&代表在查找串中匹配到的內(nèi)容
#?sed?-r?'s/Hemenway/Jones/g'?datafile?
#?sed?-r?'s/(Mar)got/\1ianne/g'?datafile?
#?sed?-r?'s#3#88#g'?datafile

文件處理器——sed

讀取命令: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

暫存合區(qū)用命令: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?&匹配前面查找的內(nèi)容


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI