sed 命令使用总结
2017-08-13 本文已影响30人
学生陈希
1. 简介
sed是非交互式的编辑器。
它不会修改文件,除非使用shell重定向来保存结果。
默认情况下,所有的输出行都被打印到屏幕上。
sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。
具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。
sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。
处理完输入文件的最后一行后,sed便结束运行。
sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。
2 常用命令
命令 | 功能 |
---|---|
d | 删除行 |
p | 打印行 |
i | 直接编辑源文件 |
s | 用一个字符串替换两一个字符串 |
g | 在行内进行全局替换 |
3. 实践 -- 替换
3.1 替换字符串
sed -i 's/abc/def/g' text.txt
表示在当前目录下的text.txt文件中,把所有的abc字符串替换为def
3.2 替换带有多个"/"的字符串
sed -i 's:/a/b/c:/d/e/f:g' text.txt
表示在当前目录下的text.txt文件中,把所有的/a/b/c字符串替换为/d/e/f
在替换的时候,不仅仅是"/" 可作为分隔符, 其他字符也可作为分隔符, 只需要前后的分隔符一致即可, 本例中使用“:” 作为分隔符。
3.3 替换 project.pbxproj 文件中的字符串
project.pbxproj 位于 xx.xcodeproj 文件中, 用上述命令来替换其中文件,无法起作用,其原因是因为OSX 需要显示的为它指定其扩展 。正确做法如下:
sed -i '' 's:/a/b/c:/d/e/f:g' project.pbxproj