快速业务通道

1012 sed 基本命令(进行中)

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-29
sed 基本命令
[address]command

---------------------------------------------------------------------------
address: 行地址
隐式匹配所有行

固定行数
sed -n ''1p'' /etc/passed
sed ''1s/:/-/g'' /etc/passwd
行数范围
sed -n ''1,$p'' /etc/passed
sed ''1,$s/:/-/g'' /etc/passwd
匹配正则行
sed -n ''/[0-9]{3,}/p'' /etc/passwd
sed ''/[0-9]{3,}/s/:/-/g'' /etc/passwd
匹配正则行范围
sed -n ''/root/,/rpm/p'' /etc/passwd
sed ''/root/,/rpm/s/:/-/g'' /etc/passwd

---------------------------------------------------------------------------
替换s
[address]s/pattern/replacement/flags

flags:
n 1-512, 表示对本模式中指定模式第n次出现的情况进行替换
g 对模式空间的所有出现的情况进行全局更改, 如果没有g时只有第一次出现的情况被更改
p 打印模式空间内容
w file 将模式空间的内容写到文件file中

替换元字符 () (&) (n)
一般用于转义其他元字符, 但它在替换字符中也用于包含换行符
匹配root所在行, 并将其前后设置为一行空行
sed ''/root/ {
s/^/
/
s/$/
/ }'' /etc/passwd
sed ''/root/ {s/^/n/ ;s/$/n/}'' /etc/passwd

& 作为替换元字符, 它表示模式匹配的范围, 用于在替换字符串中引用整个匹配内容
echo "Unix Operating System" |sed ''s/Unix/(&)/''
将用户名字符少于4个字母的使用小括号括起来
sed ''/^[a-z]{1,3}:/s/^[a-z]{1,3}/(&)/'' /etc/passwd

n 1-9, 用于引用特殊保存的备用字符串 (转义的圆括号 ((和)可以理解为元字符序列) 括住正则表达式的任意部分并保存以备对应的 n 回调)
将冒号左右内容对调
echo "second:first" |sed ''s/(.*):(.*)/2:1/''

---------------------------------------------------------------------------
删除d
删除可能包含空格的空行
sed ''/^ *$/d'' /etc/passwd
删除指定范围的行
sed ''/root/,/rpm/d'' /etc/passwd

---------------------------------------------------------------------------
追加a/插入i/更改c

[line-address]a
text

[line-address]i
text
在第二行前面插入一行before, 第二行后面增加一行after
sed -e ''2ibefore'' -e ''2aafter'' /etc/passwd
匹配root所在行, 并将其前后设置为一行空行
sed -e ''/root/i\'' -e ''/root/a\'' /etc/passwd
为每行下面插入一空行
sed ''1,$a\'' /etc/passwd
sed ''s/$/n/'' /etc/passed
sed ''{s/$/
/ }'' /etc/passwd

[address]c
text
将1-4行更改为一行#####
sed ''1,4c#####'' /etc/passwd

参考sed&awk
强烈推荐:http://liuyu.blog.51cto.com/183345/87768
By Xiao

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号