linux - 使用 grep 和 sed 递归查找和替换所有文件中的字符串

标签 linux bash recursion sed grep

我得到了一个

sed: -e expression #1, char 22: unterminated `s' command 

我的脚本有问题吗? “oldstring”也有特殊字符

#!bin/bash
oldstring='<script>"[oldscript]"</script>'
newstring='<script>"[newscript]"</script>'
grep -rl $oldstring /path/to/folder | xargs sed -i s/$oldstring/$newstring/g

最佳答案

正如@Didier 所说,您可以将分隔符更改为 / 以外的其他内容:

grep -rl $oldstring /path/to/folder | xargs sed -i s@$oldstring@$newstring@g

关于linux - 使用 grep 和 sed 递归查找和替换所有文件中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15920276/

相关文章:

linux - UNIX 中的文件操作 - 根据列计数创建重复记录并仅操作一列

linux - 为文件传输提供 ETA

linux - 从 Raspberry Pi 控制 IKEA Tradfri 灯

linux - 交换文件中的列并删除重复项

linux - 为什么命令; ls -l file_doesnot_exists >/dev/null 2>&1 正在工作; ls -l 2>&1 file_doesnot_exists >/dev/null 不是

windows - 在 Windows 中使用 grep、sed、awk 进行 Shell

java - 在 Java 递归函数中追踪数组的问题

bash - stdout 到 file1,stderr 到 file2,都正确交错到 stdout 和文件

c++ - 作为函数参数传递的数组的大小

c - 在C中求一个数的无方除数