詳解Linux sed命令語(yǔ)法、命令及實(shí)例說明
sed是一種流編編器,它是文本處理中非常中的工具,能夠完美的配合正則表達(dá)式便用,功物能不同凡響。處理時(shí),把當(dāng)前處理的行存儲(chǔ)在臨時(shí)緩沖區(qū)中,稱為”模式空間”( oattern space),接看用sed命令處理緩沖區(qū)中的內(nèi)容,處理成后,把緩沖區(qū)的內(nèi)容送往屏幕顯示。
接著理下一行,這樣不斷重復(fù),直到文件末。文件內(nèi)容沒有改改變,除非使用了寫入的命令,將內(nèi)容更新。定址用于決定對(duì)哪些行進(jìn)行編輯。地址的形式可以是數(shù)字、正則表達(dá)式、或二者的結(jié)合。如果沒有指定地址,sed將處理輸入文件的所有行。
一、sed語(yǔ)法
sed 命令的基本格式如下:
- sed [選項(xiàng)] [腳本命令] 文件名
該命令常用的選項(xiàng)及含義,如表 1 所示。
成功使用 sed 命令的關(guān)鍵在于掌握各式各樣的腳本命令及格式,它能幫你定制編輯文件的規(guī)則。
二、sed腳本命令
sed s 替換腳本命令此命令的基本格式為:
- [address]s/pattern/replacement/flags
其中,address 表示指定要操作的具體行,pattern 指的是需要替換的內(nèi)容,replacement 指的是要替換的新內(nèi)容。
關(guān)于指定具體操作行(address)的用法,這里先不做解釋,文章后續(xù)會(huì)對(duì)其做詳細(xì)介紹。
此命令中常用的 flags 標(biāo)記如表 2 所示。
三、實(shí)例演示
1. 只打印第三行
- sed -n '3p' /var/log/yum.log
2. 只查看文件的第3行到第9行
- sed -n '3,9p' /var/log/yum.log
3. 過濾特定字符串,顯示正行內(nèi)容
- sed -n '/perl/p' /var/log/yum.log
4. 打印1-5行,并顯示行號(hào)
- sed -n -e '1,5p' -e '=' /var/log/yum.log
5. 替換
- sed 's/disabled/enforcing/g' /etc/selinux/config
- sed -i 's/disabled/enforcing/g' /etc/selinux/config
6. 正則匹配IP和子網(wǎng)掩碼
- ifconfig |sed -n '2p'
- ifconfig |sed -n '2p' | sed -r 's#.*r:(.*) B.*k:(.*)#\1 \2#g'
- --(.*)表示匹配的項(xiàng),之后可以用\1取出第一個(gè)括號(hào)內(nèi)匹配的內(nèi)容,\2取出第二個(gè)括號(hào)內(nèi)匹配的內(nèi)容
7. sed錯(cuò)誤使用
- sed 's#,# #h' xx.txt | cut -d" " -f 3,5 xx.txt <-- 錯(cuò)誤的用法,前面已經(jīng)處理了,后面又用cut查看h.txt文件
- sed 's#,# #h' xx.txt | cut -d" " -f 3,5 --> 正確的用法