1. 如果是直接替换某个文件中的字符,不需要打开文件,直接替换:sed -i "s/字符串/\ /g" 文件名
2.如果是通过vi打开了某个文件,然后需要替换其中的字符 :%s/字符串/ /g 然后回车
延伸阅读:
上述两种方法中
s
代表替换指令;
/g 表示的是替换每行的所有匹配;
批量替换 替换dir文件夹下所有文件中的a字符变成A字符:
sed -i "s/a/A/g" `grep a -rl dir/`
sed介绍
sed简介
sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,成为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样重复不断,直到文件末尾。
文本内容并没有改变,除非你使用重定向存储输出。
sed主要用来自动编辑一个或多个文件,简化对文件的反复操作。
定址
可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分割的两个行数标识以这两行为起止的行的范围(包括行数表示的那两行)。例如1,3表示1,2,3,行,美元符号($)表示最后一行。范围可以通过数据、正则表达式或者二者结合的方式确定。
sed命令
调用sed命令有两种形式:
(1)sed [options] 'command' file(s)
(2)sed [options] -f scriptfile file(s)
a\ 在当前行后面加入一行文本
b label 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾
c\ 用新的文本改变本行的文本
d 从模板块位置删除行
D 删除莫板块的第一行
i\ 在当前行上面插入文本
h 拷贝莫板块的内容到内存中的缓冲区
H 追加莫板块的内容到内存中的缓冲区
g 获得内存缓冲区的内容,并替代当前模板块中的文本
G 获得内存缓冲区的内容,并追加到当前模板快文本的后面
I 列表不能打印字符的清单
n 读取下一个输入行,用下一个命令处理新的行而不是第一个命令
N 追加下一个输入行到模板块后面并在二者之间嵌入一个新行,改变当前行号码
p 打印模板块的行
P 打印模板块的第一行
q 退出sed
r file 从file中读行
t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令出,或者到脚本的末尾
T table 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令出,或者到脚本的末尾
w file 写并追加模板块到file末尾
W file 写并追加模板块的第一行到file末尾
! 表示后面的命令对所有没有被选定的行为发生作用
s/re/string 用string替换正则表达式re
= 打印当前行号码
# 把注释扩展到下一个换行符以前
替换标记:
g 表示行内全面替换
p 表示打印行
w 表示把行写入一个文件
x 表示互换模板块中的文本和缓冲区中的文本
y 表示把一个字符翻译为另外的字符,但是不用于正则表达式
选项
-e command, --expression = command
允许多台编辑
-h, --help
打印帮助,并显示bug列表的地址
-n, --quiet, --slient
取消默认输出
-f, --filer=script-file
引导sed脚本文件名
-V, --version
打印版本和版权信息
元字符集
^ 锚定行的开始,如:/^sed/ 匹配所有以sed开头的行
$ 锚定行的结束,如:/sed$/ 匹配所有已sed结尾的行
. 匹配一个非换行符的字符,如:/s.d/ 匹配s后接一个任意字符,然后是d
* 匹配零或多个字符,如:/*sed/ 匹配所有模板是一个或多个空格后紧跟sed的行
[] 匹配一个指定范围内的字符,如:/[Ss]ed/ 匹配sed和Sed
[^] 匹配一个不再指定范围内的字符,如:/[^A-RT-Z]ed/ 匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行
\(..\) 保存匹配的字符,如:s/\(love\)able/\1rs, loveable被替换成lovers
& 保存搜索字符用来替换其他字符,如:s/love/**&**/, love变成**love**
\ 锚定单词的结束,如:/love\>/ 匹配包含以love结尾的单词的行
x\{m\} 重复字符x,m次,如:/o\{5\}/ 匹配包含5个o的行
x\{m,\} 重复字符x,至少m次
x\{m,n\} 重复字符想,至少m次,不多于n次
实例
删除:d命令
$ sed '2d' example ------删除example文件的第二行
$ sed '2,$d' example ------删除example文件的第二行到末尾所有行