Linux之sed命令常见用法
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个()内的内容,&指代##里面查找到的所有内容 脚本命令 i 在匹配的文件内容行前增加,常用格式:’//i zjnr’,’2i zjnr’ a 在匹配的文件内容行后增加,常用格式:’//a zjnr’、’2a zjnr’ d 删除匹配的文件内容所在的行,常用格式:’//d’、’2d’ p 打印输出匹配到的文本内容,常用格式:sed -n ’//p’、sed -n ‘2p’ s 替换匹配到的文件内容,常用格式:’s///g’、’s###g’;&代表匹配到的内容 c 按匹配到的内容替换文本内容,使用格式:’2c thnr’
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*
静静的学习一阵子儿...