【发布时间】:2014-01-25 15:50:29
【问题描述】:
我想知道如何:
替换两个匹配模式之间的所有行(不包括模式 - 独占)。请注意,这些将在不同的行中。
替换两个匹配模式(包括)之间的所有行。请注意,这些将在不同的行上 我已经开始了第一个,但它没有产生预期的结果(到目前为止还没有结果)。请记住,这适用于 Mac OSX (BSD) 上的 sed。本例中的模式是 两个 html cmets 在不同的行上。
我的 shell 脚本如下所示:
REPLACEWITH="Replacement text here"
sed -i '' -e "s&\(<!--BeginNotes-->\).*\(<!--EndNotes-->\)&\1$REPLACEWITH\2&" /Users/BlaNameHere/builds/development/index.php
在我的 index.php 文件的头部是这段摘录:
<!--BeginNotes-->
<!--asdasd-->
<script type="application/javascript">var Jaop;</script>
<!--EndNotes-->
示例结果a
<!DOCTYPE html>
<html>
<head>
<title></title>
<!--BeginNotes-->
Replacement text here
<!--EndNotes-->
</head>
<body>
</body>
</html>
示例结果 b
<!DOCTYPE html>
<html>
<head>
<title></title>
Replacement text here
</head>
<body>
</body>
</html>
【问题讨论】:
-
您是绑定到 sed 还是允许使用其他工具(例如 awk)?
-
我不介意看到 awk 解决方案,目前我最熟悉 sed。我也想忠于标题。
-
您希望文件在 操作后看起来像什么?
-
我将在上面添加以显示示例文件 a a 和 b