您的位置:首页 > 运维架构 > Linux

Linux常用命令之sed

2016-07-21 11:53 274 查看
在写Shell脚本的时候经常会用到修改文件

比如配置文件configure

#!/bin/sh

FFMPEG_UPSTREAM=https://github.com/FFmpeg/FFmpeg.git
X264_UPSTREAM=http://git.videolan.org/git/x264.git

FFMPEG_LOCAL_REPO=liblocal


之前一直用的替换方法比较Low

conf=$(cat configure)
conf=${conf//liblocal/libffmpeg}
echo $conf > configure


后来发现这种方式替换文件,文件的格式会混乱(对格式没有严格要求的可以用这种方法)



后来发现是用sed命令效果更好

sed -i 's/liblocal/libffmpeg/g' configure




输出格式没变

我们可以来看看sed的帮助

sed --help


输出使用详情

用法: 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  输出版本信息并退出

如果没有 -e, --expression, -f 或 --file 选项,那么第一个非选项参数被视为
sed脚本。其他非选项参数被视为输入文件,如果没有输入文件,那么程序将从标准
输入读取数据。

GNU版sed主页: <http://www.gnu.org/software/sed/>。
使用GNU软件所需帮助文档: <http://www.gnu.org/gethelp/>。
将错误报告通过电子邮件发送到:<bug-sed@gnu.org>.
请务必将单词“sed”放在标题的某处。




sed -i 's/abc/xxx/g' file


这里的

-i直接修改并保存

abc表示待替换的字符串

xxx表示修改后的字符串

file表示文件

\s表示空格的转义
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux shell 脚本