技术
成就梦想!

shell编程—sed文件内容查找替换命令

一、sed简介

sed命令在Shell编程中是比较常用的命令,用来替换文本文档中的内容。

sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

二、sed使用参数

三、替换案例

行的替换
sed -e '1c/#!/bin/more' file (把第一行替换成#!/bin/more)
思考:把第 n 行替换成 just do it
sed -e 'nc/just do it' file
sed -e '1,10c/I can do it' file (把 1 到 10 行替换成一行: I can do it)
思考:换成两行(I can do it! Let's start)
sed -e '1,10c/I can do it!/nLet'"/'"'s start' file
字符的替换
$ sed 's/test/mytest/g' example-----在整行范围内把 test 替换为 mytest。如果没有 g 标记,则只有每行第一个匹配的 test 被替换成 mytest。
$ sed -n 's/^test/mytest/p' example-----(-n)选项和 p 标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的 test 被替换成 mytest,就打印它。
$ sed 's/^192.168.0.1/&localhost/' example-----&符号表示替换换字符串中被找到的部份。所有以 192.168.0.1 开头的行都会被替换成它自已加 localhost,变成 192.168.0.1localhost。
$ sed -n 's/loveable/\1rs/p' example-----love 被标记为 1,所有 loveable 会被替换成 lovers,而且替换的行会被打印出来。
$ sed -i "s#;date.timezone =#date.timezone = Asia/Shanghai#" /etc/php.ini-----不论什么字符,紧跟着 s 命令的都被认为是新的分隔符,所以,“#”在这里是分隔符,代替了默认的“/”分隔符。表示把所有 ;date.timezone 替换成 date.timezone = Asia/Shanghai,这样可以替换带有”/“的文本

image

赞(0) 打赏
未经允许不得转载:未来往事的博客 » shell编程—sed文件内容查找替换命令

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏