Linux之sed命令常見用法
阿新 • • 發佈:2019-01-23
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命令常見用法