这可能吗?我在某处读到以下命令可以做到这一点:
sed -e [命令] [文件]
但它似乎做了同样的事情
sed [命令] [文件]
(它没有保存更改)。有没有办法使用 sed 来做到这一点?
答案1
我想您正在寻找-i
:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
例如:
$ cat foo.txt
hello world
$ sed -i 's/o/X/g' foo.txt
$ cat foo.txt
hellX wXrld
如果您提供后缀,它将创建一个备份文件:
$ ls
foo.txt
$ sed -i.bak 's/o/X/g' foo.txt
$ ls
foo.txt foo.txt.bak
修改输入文件并创建包含原始文件数据的备份。
另请注意,这是针对 GNU 的sed
,有细微差别sed
不同实现之间的格式。
答案2
这些解决方案适用于 HPUX (UNIX):
1
{ rm test1.sh && awk '{gsub("Error", "NO_Error", $0); print}' > test1.sh; } < test1.sh
.:
2.
perl -pi -e 's/Error/NO_Error/g' test1.sh
3.
sed 's/Error/NO_Error/g' test1.sh | tee test1.sh
答案3
-e
选项用于执行多个sed
命令
sed -e 's/linux/unix/' -e 's/os/OS/' file.txt
考虑file.txt
为
linux os
那么 O/P 是
unix os
-i
选项永久保存更改...