加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 不写入文件

发布时间:2020-12-16 01:58:08 所属栏目:安全 来源:网络整理
导读:我在使用sed替换值并写入新文件时遇到问题.它写入新文件,但无法更改任何值.这是我的代码: cd/mydirectory echo "Enter file name:"read file_inputfile1= "$file_input"file1= "$file1.b"file2= "$file_input"file2= "${file2}Ins.b"sed "/!!/s/!!.*/cats
我在使用sed替换值并写入新文件时遇到问题.它写入新文件,但无法更改任何值.这是我的代码:

cd/mydirectory  

echo "Enter file name:"
read file_input

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

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

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

我只想用值为300的猫替换任何文本.每当我运行此脚本时,它不会用300覆盖以前的值.有什么建议吗?

解决方法

尝试改变

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

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

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

编辑

我注意到你将输出重定向到同一个文件 – 你不能这样做.你有2个选择:

>将结果重定向到另一个文件,文件名不同.例如.:

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

注意$file2之后的.tmp
>使用-i标志(如果使用GNU sed):

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

我代表内联更换.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读