【发布时间】:2013-09-30 14:47:44
【问题描述】:
我的问题是从三个模式中决定首先出现的模式,并删除第一个模式之前的所有内容,同样删除最后一个模式之后的所有内容。
我知道可以使用以下命令删除上述模式的所有内容:
sed -n '/pattern/,$p' input
grep -E -m1 "pattern1|pattern2|pattern3" 将打印包含第一个模式的行,我想我必须将此命令的输出提供给sed 的某些变体,但不知道该怎么做。
- 模式1
- 模式2
- 模式3
Line1 这是一个示例行,没有任何意义,请忽略
Line2 仅用于提供示例 PATTERN2 以使我的查询对所有人都清楚
Line3 这是一个示例行,例如没有任何意义请忽略
Line4 仅用于提供示例 pattern1 以使我的查询对所有人都清楚
Line5 这是一个示例行,没有任何意义请忽略
Line6 仅用于提供示例 pattern1 以使我的查询对所有人都清楚
Line7 这是一个示例行,没有任何意义,请忽略
Line8 仅用于提供示例 pattern2 以使我的查询对所有人都清楚
Line9 这是一个示例行,没有任何意义请忽略
Line10 仅用于提供示例 pattern3 以使我的查询对所有人都清楚
Line11 仅用于提供示例 PATTERN2 以使我的查询对所有人都清楚
Line12 仅用于提供示例 pattern1 以使我的查询对所有人都清楚
Line13 仅用于提供示例 pattern3 以使我的查询对所有人都清楚
第 14 行仅用于举例说明我的查询对所有人都清楚
期望的输出:
如果第一个模式是 PATTERN2 并且 pattern3 是三个模式中的最后一个模式,那么下面将是所需的输出:
Line2 仅用于提供示例 PATTERN2 以使我的查询对所有人都清楚
Line3 这是一个示例行,例如没有任何意义请忽略
Line4 仅用于提供示例 pattern1 以使我的查询对所有人都清楚
Line5 这是一个示例行,没有任何意义请忽略
Line6 仅用于提供示例 pattern1 以使我的查询对所有人都清楚
Line7 这是一个示例行,没有任何意义,请忽略
Line8 仅用于提供示例 pattern2 以使我的查询对所有人都清楚
Line9 这是一个示例行,没有任何意义,请忽略
Line10 仅用于提供示例 pattern3 以使我的查询对所有人都清楚
Line11 仅用于提供示例 PATTERN2 以使我的查询对所有人都清楚
Line12 仅用于提供示例 pattern1 以使我的查询对所有人都清楚
Line13 仅用于提供示例 pattern3 以使我的查询对所有人都清楚
【问题讨论】:
-
模式是字符串还是正则表达式?一种模式可以包含在另一种模式中吗?模式需要是一个完整的单词吗?模式匹配是否必须区分大小写或不区分大小写(如您的示例所示)?
-
您的以下解决方案在我的脚本中完美运行。谢谢
标签: unix sed awk html-table