sed 不写入文件

Old*_*Man 5 bash sed

我在使用 sed 替换值并写入新文件时遇到问题。它写入一个新文件,但无法更改任何值。这是我的代码:

cd/mydirectory  

echo "Enter file name:"
read file_input

file1= "$file_input"
file1= "$file1.b"

file2= "$file_input"
file2= "${file2}Ins.b"

sed "/\!cats!/s/\!cats!.*/cats!300!/g $file1>$file2
Run Code Online (Sandbox Code Playgroud)

我只是想用值 300 替换猫之后的任何文本。每当我运行这个脚本时,它都不会用 300 覆盖以前的值。有什么建议吗?

jim*_*-cl 3

尝试改变

sed "/\!cats!/s/\!cats!.*/cats!300!/g $file1>$file2
Run Code Online (Sandbox Code Playgroud)

sed "s/cats.*/cats300/g" $file1 > $file2
Run Code Online (Sandbox Code Playgroud)

要替换文本,您通常必须使用 sed likesed "s/foo/bar/g" file_in > file_out来更改所有出现的foowith barin file_in,将输出重定向到file_out


编辑

我注意到您正在将输出重定向到同一个文件 - 您不能这样做。您有 2 个选择: