gpt4 book ai didi

bash - sed 不写入文件

转载 作者:行者123 更新时间:2023-11-29 09:14:38 24 4
gpt4 key购买 nike

我在使用 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

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

最佳答案

尝试改变

sed "/\!cats!/s/\!cats!.*/cats!300!/g $file1>$file2

sed "s/cats.*/cats300/g" $file1 > $file2

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


编辑

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

  • 将结果重定向到另一个具有不同文件名的文件。例如:

    sed "s/cats.*/cats300/g" $file1 > $file2.tmp

    注意 .tmp$file2 之后

  • 使用 -i标志(如果使用 GNU sed):

    sed -i "s/cats.*/cats300/g" $file1

    i代表内联替换

关于bash - sed 不写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24250788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com