1. 程式人生 > >Linux之sed命令常見用法

Linux之sed命令常見用法

cron 更改 inux api lin sed命令 -s 輸出 syslog

1. sed(stream editor),流編輯器

  linux中,主要中sed命令實現對文件的增刪改替換查

名稱
       sed - 用於過濾和轉換文本的流編輯器

SYNOPSIS
       sed [選項]... {script-only-if-no-other-script} [文件]...

常用選項或命令
-i                  正式執行操作修改內容    
     
-n                  取消默認輸出

-e                  允許多項編輯

-r                  使用擴展正則表達式

= 在文件內容行前增加一行行號 s 查找並替換 g 全局範圍 p 打印輸出 / /p 正則表達式匹配/ /裏面的內容並輸出
2s///g 2指代第二行 s#()()#\1\2#g 分配處理,\1指代第1個()內的內容

‘s#()()#mv & doubi#g‘     分配處理,\1指代第1個()內的內容,&指代##裏面查找到的所有內容


2. sed的簡單增刪查改

# 把passwd文件復制到當前用戶家目錄
cp /etc/passwd ~/
cd

# 增
# 22行前插入
sed -i 22 i佛祖派來的逗比 passwd
# 22行後添加
sed -i 22 a佛祖派來的逗比 passwd
# 匹配postfix行,在行前插入
sed -i /postfix/ iemail passwd

# 刪
sed -i 22d passwd
sed -i /佛祖派來的逗比/d passwd

# 查,-n取消默認輸出,即只輸出匹配到的內容
sed -n /root/p passwd
sed -n 22p passwd # 替換 # 替換匹配到的第一個root為Caiyun sed -i s#root#Caiyun# passwd # 替換所有root為Caiyun sed -i s#root#Caiyun#g passwd

3. 擴展實例

# 取ip地址
ifconfig eth0|sed -nr 2s/^.*ddr:(.*) B.*$/\1/gp

# 轉換列輸出
sed -r s#([^:]+)(:.*:)(/.*$)#\3\2\1#g passwd
 
# 優化sshd服務
sed 13a Port 52004\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthentication no sshd_config
 
# 打印文件內容不包含root用戶行
sed /root:x/d passwd
 
#指定行修改文件內容
sed 28s/dudu/DUDU/g passwd 
 
# 優化開機自啟動服務
chkconfig --list|grep "3:on"|egrep -v "crond|network|rsyslog|sshd|sysstat" |awk {print"chkconfig",$1,"off"}|bash
 
# 批量更改文件名
ls rename/|sed -r s/(^stu.*)_fin.*$/\1.png/g
ls|sed s/\(^stu.*\)_fin.*$/mv & \1.png/g|bash
rename "_finished" ""  stu*

Linux之sed命令常見用法