我有一些文件,其中存储了一些凭据,我希望 shell 脚本读取该文件并检查当前凭据是否与搜索到的字符串匹配,仅在该位置替换它。
我尝试了下面的代码,但它总是附加,甚至不替换字符串。
cat $FILESOURCE | sed -e "s/$TEXTTOSEARCH/$TEXTTOREPLACE/g" >> $FILESOURCE
在哪里
FILESOURCE
= 我要读取的 .txt 文件TEXTTOSEARCH
= 要搜索的字符串TEXTTOREPLACE
= 要替换的文本
注意:我不想弄乱现有文件,而是只是打开文件进行读取,检查是否找到搜索字符串,然后替换它,如果找不到,则不对文件执行任何操作。
答案1
当然它会追加,因为您使用的是>>
,这意味着追加。
你里面有什么$TEXTTOSEARCH
?只有字母还是有特殊字符?如果在正则表达式中存在具有特殊含义的特殊字符,则必须对它们进行转义才能正常工作。例如.
表示任何字符。您应该将其替换为\.
您的$TEXTTOSEARCH
.看这里更多细节。
有很多方法可以处理您的文件。我建议你使用
sed -i.bak -e "s/$TEXTTOSEARCH/$TEXTTOREPLACE/g" $FILESOURCE
这样 sed 将替换文件中的文本并使用.bak
扩展名进行备份。如果您想要其他方式,请指定更详细的信息。您的问题不是很清楚,正如您所说您不想弄乱现有文件,并且您想替换该文件中的文本?