如何查找和替换 .txt 文件中的字符串?

如何查找和替换 .txt 文件中的字符串?

我有一些文件,其中存储了一些凭据,我希望 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扩展名进行备份。如果您想要其他方式,请指定更详细的信息。您的问题不是很清楚,正如您所说您不想弄乱现有文件,并且您想替换该文件中的文本?

相关内容