如何使用 sed 命令对文件进行永久更改?

如何使用 sed 命令对文件进行永久更改?

这可能吗?我在某处读到以下命令可以做到这一点:

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选项永久保存更改...

相关内容