如何从许多文件中删除包含特殊字符的字符串

时间:2019-03-20 11:39:41

标签: linux bash shell sed

我需要从目录和子目录中的所有文件中删除(替换为空白)字符串。

但是此字符串包含特殊字符,例如&?. <> / (这是一个网址)! 我尝试使用sed和rpl都没有成功:无法逃脱字符。 要更改的字符串ex

<script src='https://test.com?type=in2&frm=scr&'></script>

尝试

 rpl " <script src='https://test.com?type=in2&frm=scr&'></script>" "" index.php

我遇到一个错误; NameError:名称“ raw_input”未定义

我只需要知道如何转义rpl中sed中的这些'/?.& chars

2 个答案:

答案 0 :(得分:0)

将查找与sed一起使用:

find /dir/*  -exec sed -i 's/&//g;s/\?//g;s/\<//g;s/\>//g;s/\///g' {} +

更改行:

grep -v "<script src='https://test.com?type=in2&frm=scr&'></script>" file > newfile

答案 1 :(得分:0)

  

它应该删除整个脚本行。

然后将grep-v一起使用。

$ cat <<'EOF' >/tmp/test.txt
a
<script src='https://test.com?type=in2&frm=scr&'></script>
b
EOF
$ grep -x -v "<script src='https://test.com?type=in2&frm=scr&'></script>" /tmp/test.txt
a
b