Sed详解

2018-04-28 14:19:59 浏览数 (1)

代码语言:javascript复制
1、说明
sed 一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
2、用法
sed:
用法: sed [选项]... {脚本(如果没有其他脚本)} [输入文件]...

  -n, --quiet, --silent
                 取消自动打印模式空间
  -e 脚本, --expression=脚本
                 添加“脚本”到程序的运行列表
  -f 脚本文件, --file=脚本文件
                 添加“脚本文件”到程序的运行列表
  --follow-symlinks
                 直接修改文件时跟随软链接
  -i[SUFFIX], --in-place[=SUFFIX]
                 edit files in place (makes backup if SUFFIX supplied)
  -l N, --line-length=N
                 指定“l”命令的换行期望长度
  --posix
                 关闭所有 GNU 扩展
  -r, --regexp-extended
                 在脚本中使用扩展正则表达式
  -s, --separate
                 将输入文件视为各个独立的文件而不是一个长的连续输入
  -u, --unbuffered
                 从输入文件读取最少的数据,更频繁的刷新输出
  -z, --null-data
                 separate lines by NUL characters
      --help     打印帮助并退出
      --version  输出版本信息并退出
示例:sed '2,5d' 
其中2,5表示2-5行(包含);d表示删除
a新增
c取代
d删除
i插入
p列印
s取代,通常搭配正则使用
举个栗子
sed '3,$d'					删除第三行到最后一行,$标示最后一行
sed '2a 这是追加的内容'		在第二行后追加内容
sed '2i 这是插入的内容'		在第二行前插入内容
sed '2c 这是替换后的内容'	替换第2~5行内容
sed '2-5p'					打印第2~5行内容
sed  -n '/root/p'			打印包含有root的行
/sbin/ifconfig eth0 |grep 'inet 地址'| sed 's/^.*地址://g' | sed 's/广播.*$//g'
等同于
/sbin/ifconfig eth0 |grep 'inet 地址'| sed -e 's/^.*地址://g' -e 's/广播.*$//g'
备注:/sbin/ifconfig eth0 |grep 'inet addr'| sed -e 's/^.*addr://g' -e 's/Bcast.*$//g'
3、实战案例-替换安卓AndroidManifest.xml配置项
echo ' '|sed -e 's#name=".*"#name="123456"#g'
备注:s后面跟着的是匹配符可以为/或者?或者#,g是全部替换

0 人点赞