使用SED从开始到结束删除范围

时间:2017-04-03 12:21:09

标签: regex sed

我需要从html文件中删除和删除标头。 //I want to identify <head> and delete all content until </head>.

sed '/^<head>$/,/^<\/head>$/d' 6.php

我正在使用终端连接从Mac访问服务器。我已经使用了许多组合,上面的组合工作(一次),但不能让它再次工作。

我搞砸了哪里?我是否需要添加库才能使其正常工作

2 个答案:

答案 0 :(得分:0)

这适用于我单个文件:

sed '/<head>/,/<\/head>/d' hello.php  

多个文件:

ls *.php | xargs sed '/<head>/,/<\/head>/d' 

(引用@Vivek,只是为了制作Q / A对。)

答案 1 :(得分:0)

sed -e '
# case of both on same line
   \!<head>.*</head>! s////
# if occur, continue to next line
   t
# other case, delete line, after <head>, before </head> (including)
   /<head>/,\!</head>! {
      s/<head>.*//;t
      s!.*</head>//;t
      d
      }
  ' YourFile

假设 head 部分内没有有趣的<head>