如何在字符串中查找和删除多个子字符串

时间:2014-06-25 15:12:42

标签: linux string bash shell

我输入如下

输入文件名:a.txt

  

- 一些评论

     

从tb.Test删除WHERE id =' abxd1&#39 ;;

     

从tb1.Test删除WHERE id =' abxd2';

     

- 一些评论

     

从tb1.Table1删除WHERE id =' abxd3';

预期输出文件:b.txt

  

- 一些评论

     

从测试中删除WHERE id =' abxd1&#39 ;;

     

从测试中删除WHERE id =' abxd2';

     

- 一些评论

     

从Table1中删除WHERE id =' abxd2';

以下代码将替换值" tb。"。我试图将其作为通用脚本。

while read line
do
   str=$line
   echo "${str/tb./}" >>b.txt
done <$1

谢谢你的帮助

3 个答案:

答案 0 :(得分:1)

您可以使用sed

sed 's/delete from \(tb[0-9]\?\).\([[:alnum:]]\+\)/delete from \2/g' input.file

答案 1 :(得分:0)

您可以使用sed执行此操作:

echo $str | sed -r 's/tb[a-z0-9_]*.//g'

HTH

答案 2 :(得分:0)

假设您要删除X.中的delete from X.Y(DOT和DOT之前的所有内容),它甚至更简单:

sed 's/delete from .*\./delete from /' a.txt

您可以使用-i选项覆盖同一个文件

sed -i 's/delete from .*\./delete from /' a.txt

HTH,Marcello