我有一个文本文件./.
,需要用 替换它0|0
。
该文件太大,无法在 Gedit 中打开并手动执行。
我可以使用 来做到这一点sed
吗?
答案1
是的。在这种情况下,选择不同的分隔符(如)很有用_
,这样您就不必转义斜线:
sed 's_\./\._0|0_'
例子:
$ cat test
./.
$ sed 's_\./\._0|0_' test
0|0
添加
-i
就地更改文件,而不是将输出打印到标准输出,-i.b
这样做并保存备份.b
作为扩展名和g
到表达式的末尾来更改每行的多个出现次数,而不仅仅是第一个出现次数 (→'s_\./\._0|0_g'
)。
解释
答案2
是的,你可以用 sed 来做到这一点。
你需要用 来转义.
和。/
\
sed -i.bak 's/\.\/\./0|0/g' file
-i.bak
将使 sed 就地编辑文件,但会创建一个扩展名为 .bak 的备份文件。末尾的表示“全局” --> 替换所有出现的内容
。g
答案3
即使您要求sed
命令来满足您的要求,您也可以尝试ex
命令。
ex -sc '%s/\.\/\./0|0/g|x' file
%
选择所有行
s
替代
g
全局替换所有实例
x
写入是否做出更改并退出
例子:-
$cp file file.bak
$cat file
./.
$ex -sc '%s/\.\/\./0|0/g|x' file
$cat file
0|0