代码语言: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是全部替换