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