sed是一种在线编辑器,它一次处理一行内容。
一般sed有两种调用方式:
sed [options] 'command' {filenames}
sed [options] -f scriptfile {filenames}
删除操作,命令d
$ sed '3d' test 删除test文件的第三行
$ sed '1,3d' test 删除test文件的第一行到的三行
$ sed '3,$d' test 删除的第三行后的所有行
$ sed '/^A/d' test 删除以A开头的行
$ sed '/david/d' test 删除包含有david的所有行
打印操作,命令p
$ sed -n '/david/p' test 只输出含有david的行
$ sed -n '/david/,/wade/p' test 匹配从包含有david的行到包含有wade的行之前所有行,如果匹配不到wade则匹配从含有david的行开始的所有行
$ sed -n -e '=' -e 'p' test 打印行号和每一行,-e使得=和p先后作用于一行
替换操作,命令s
$ sed 's/david/wade/g' test 将每一行的david替换为wade,g代表全局替换,否则将只替换每行第一个
$ sed '1,3s/david/wade/g' test 将第一行到第三行的david替换成wade
$ sed 's:/home/david:/home/wade:g' test 将/home/david替换为/home/wade,这里用:取代/为分割符
$ sed -n 's/^david/wade/p' test 将以david开头的行替换成wade开头并打印
$ sed -n 's/\(log\)in/\1out/p' test 将login以logout替换并打印
$ sed 's/.*/david: &/' test 在每行前面加上加上david:,&代表匹配到的本身
插入操作,命令i,a,c
$ sed '/david/i\hello world!' test 在含有david的行之前加入内容为'hello world!'的行
$ sed '/david/a\hello world!' test 在含有david的行之后加入内容为'hello world!'的行
$ sed '/david/c\hello world!' test 把含有david的行替换为内容为he'llo world!'的行
文件操作,命令r,w
$ sed '/david/r test1' test 将test1的内容读入显示在与david匹配的行后面
$ sed -n '/david/w test' test1 将test1中包含david的行写入test中
保持并替换,命令h,x
$ sed -e '/wade/h' -e '/david/x' test 用含有wade的行替换含有david的行替换
保持并获取,命令h,G
$ sed -e '/david/h' -e '/wade/G' test 把含有david的行保存并插入含有wade的行的后面
处理下一行,命令n
$ sed '/david/{ n; s/hello/wade/; }' test 匹配到david后移到下一行并将这一行的hello替换为wade
阅读(1876) | 评论(0) | 转发(0) |