【发布时间】:2018-01-23 03:05:27
【问题描述】:
我有一个包含以下信息的文件:
start pattern1
line1
line2
...
end pattern1
line3
line4
start pattern2
...
我的输出应该是:start pattern1
line1
line2
end pattern1
如果我知道pattern1 是什么,我就能做到
sed '/start pattern1/,/end pattern1/p' <file>
但在这里,我想匹配 pattern1(如 perl 正则表达式中的 \S+)并最终使用相同的(如 $1)。我该怎么做?
【问题讨论】:
-
预期的输出是什么,您能否在您的帖子中提及。
-
您仍然可以使用
sed -n '/pattern1/,/pattern1/p' input来满足您的要求 -
你能举一个真实的例子吗?
start和end是否存在?还是只有patern? -
永远不要使用范围表达式,始终使用标志。这意味着您当然不能使用 sed - 请参阅 stackoverflow.com/a/17914105/1745001 和 stackoverflow.com/q/23934486/1745001 了解如何在条件之间打印文本。
-
澄清我的问题:'start' 和 'end' 是我想匹配的未知
pattern1的前缀关键字。