快速业务通道

linux命令之sed

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-05


a(a或者a\):在当前行后面加入一行文本
sed ''/^test/a---->this is a example2'' example
在test开头的行下,添加一行新的文本“---->this is a example2”

d 删除
D 删除模板的第一行
i 在当前行上面插入文本
h 拷贝模板块的内容到内存中的缓冲区.
H 追加模板块的内容到内存中的缓冲区
g 获得内存缓冲区的内容,并替代当前模板块中的文本.
G 获得内存缓冲区的内容,并追加到当前模板块文本的后面.
l 列表不能打印字符的清单.
n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令.
N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码.
p 打印模板块的行.
P(大写)
q 退出Sed.
r file:从file中读行.
t label:if分支,从一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾.
T label:错误分支,从一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾.
w file:写并追加模板块到file末尾.
W file:写并追加模板块的第一行到file末尾.

替换标记
g表示行内全面替换.
p表示打印行.
w表示把行写入一个文件.
x表示互换模板块中的文本和缓冲区中的文本.
y表示把一个字符翻译为另外的字符(但是不用于正则表达式)

元字符集
^ 锚定行的开始 如:/^sed/匹配所有以sed开头的行.
$ 锚定行的结束 如:/sed$/匹配所有以sed结尾的行.
. 匹配一个非换行符的字符 如:/s.d/匹配s后接一个任意字符,然后是d.
* 匹配零或多个字符 如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行.
[]匹配一个指定范围内的字符,如/[Ss]ed/匹配sed和Sed.
[^]匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行.
(..) 保存匹配的字符,如s/(love)able/1rs,loveable被替换成lovers.
& 保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**.
< 锚定单词的开始,如:/<love/匹配包含以love开头的单词的行.
> 锚定单词的结束,如/love>/匹配包含以love结尾的单词的行.
x{m} 重复字符x,m次,如:/0{5}/匹配包含5个o的行.
x{m,} 重复字符x,至少m次,如:/o{5,}/匹配至少有5个o的行.
x{m,n} 重复字符x,至少m次,不多于n次,如:/o{5,10}/匹配5--10个o的行

d 删除第二行到末行:sed ''2,$d'' example
s 替换以192.168.0.1开头的行为192.168.0.1localhost:sed ''s/^192.168.0.1/&localhost/'' example
逗号 选定行范围,选定处于test和check行之间的行,并将结尾替换成sed test:sed ''/test/,/check/s/$/sed test/'' example
e 多步编辑,先删除1到5行,在替换test为check:sed -e ''1,5d'' -e ''s/test/check/'' example
r 从文件读入,注意读入的文件后面没有斜杠: sed ''/test/r file2'' example(如果example里有匹配test的行,则将读入的file2写在匹配行的下面.如果有多行匹配,则全部附加一遍)
w 写入文件 sed -n ''/test/w file3'' example(如果example里有匹配test的行,则将匹配到的行写入file3文件里.不匹配的行不写入.)
a 追加内容 sed ''/^test/a--->this is a example'' example(将内容追加到匹配的行的下一行位置)
i 插入内容 sed ''/test/inew line-------------------------'' example(将内容插入到匹配的行的上一行位置)

什么时候把这句看懂了基本上就不是sed命令菜鸟了:sed ''s/^([^:]*):(*) ([* ]*)/1:3, 2/'' < example2 > example

留下参考:

#!/bin/sh
u1=/tmp/user.$
p1=/tmp/person.$
o1=/tmp/office.$
t1=/tmp/telephone.$

trap "exit 1"
trap "rm -f $p1 $o1 $t1 $u1" exit

awk -F: ''{ print $1 ":" $5 }'' > $u1

sed -e ''s=/.*==''
-e ''s=^([^:]*):(.*) ([^ ]*)=1:3, 2='' < $u1 | sort > $p1
sed -e ''s=^([^:]*):[^/]*/(^/*)/.*$=1:2='' < $u1 | sort > $o1
sed -e ''s=^([^:]*):[^/]*/[^/]*/([^/]*)=1:2='' < $u1 |sort > $t1

join -t: $p1 $o1 |
join -t: - $t1 |
cut -d: -f 2- |
sort -t: -k1,1 -k2,2 -k3,3 |
awk -F: ''{ printf("%-39st%st%sn", $1, $2, $3) }''

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号