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 sed -i "s/cats.*/cats300/g" $file1 我代表内联更换. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |