以递归方式搜索和替换sed中的html标记

时间:2014-10-17 10:43:34

标签: html search sed

我正在尝试编写一个脚本,以递归方式从所有文件中搜索和删除htm和html标记。起点在运行脚本的命令中作为输入给出。生成的文件应保存在以_changed结尾的同一位置的新文件中。例如,start.html> start.html_changed。 这是我到目前为止写的脚本。它工作正常,但输出打印到终端,我希望它分别保存在文件中。

#!/bin/bash

sudo find $1 -name '*.html' -type f -print0 | xargs -0 sed -n '/<div/,/<\/div>/p'

sudo find $1 -name '*.htm' -type f -print0 | xargs -0 sed -n '/<div/,/<\/div>/p'

非常感谢任何帮助。

以下脚本运行正常,但不是递归的。我怎么能让它递归?

#!/bin/bash

for l in /$1/*.html
 do
   sed -n '/<div/,/<\/div>/p' $l > "${l}_nobody"
 done

for m in /$1/*.htm
 do
   sed -n '/<div/,/<\/div>/p' $m > "${m}_nobody"
 done

1 个答案:

答案 0 :(得分:0)

只需编辑xargs部分,如下所示:

xargs -0 -I {} sh -c "sed -n '/<div/,/<\/div>/p' {} > {}_changed"

<强>解释

  • -I {}:设置占位符
  • > {}_changed":重定向到_changed后缀
  • 的文件