使用sed删除一个文本块

时间:2011-08-04 17:08:57

标签: linux unix sed

我有一个看起来像这样的文本块:

    <!-- BOF CLEAN -->
... a bunch of stuff 
    <!-- EOF CLEAN -->

我想删除整个块。什么是sed命令?

3 个答案:

答案 0 :(得分:39)

$ cat text 
abc
    <!-- BOF CLEAN -->
... a bunch of stuff
    <!-- EOF CLEAN -->
def
$ sed '/<!-- BOF CLEAN -->/,/<!-- EOF CLEAN -->/d' text 
abc
def

http://www.catonmat.net/blog/sed-one-liners-explained-part-three/

答案 1 :(得分:4)

要删除从<!-- BOF CLEAN -->开始并包含<!-- EOF CLEAN -->并包括sed -i '/<!-- BOF CLEAN -->/,/<!-- EOF CLEAN -->/d' file_name; 的所有文本,请使用以下sed命令:

<html>
<head> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular.min.js"></script>  
</head> 
<body ng-app="myApp" ng-controller="myCtrl"> 
<select ng-model="name">
    <option>Peter</option>
    <option>Jenny</option>
</select>
{{name}}
<script>
//Module Declaration
var app = angular.module('myApp',[]);
//Controller Declaration
app.controller('myCtrl',function($scope){
    $scope.name="Please Select"
});
</script> 
</body> 
</html> 

参考:Delete text or paragraph between two sections using sed

答案 2 :(得分:0)

这几天,我正在使用/s修饰符来执行此操作。我没有注意到有人提到过。我使用的标记也没有空格

{bof-nf} ... a bunch of stuff {eof-nf}

例如,要删除此阻止,请使用

$newcontent = preg_replace("/\{bof-nf\}(.*)\{eof-nf\}\\n/s", "", $newcontent);

要保留该块但删除标签,请使用

$newcontent = preg_replace("/\{bof-nf\}.*\\n/", "", $newcontent); $newcontent = preg_replace("/\{eof-nf\}.*\\n/", "", $newcontent);