sed 或 awk 在 2 个模式之间打印[不包括模式]

sed 或 awk 在 2 个模式之间打印[不包括模式]

我有以下文字..

[start]
this
is my line
[end]

我的输出应该是:

this
is my line

需要帮忙..

尝试了以下组合:

sed -n '/start/,/end/p' $File  & sed -e "s/]/']/" -e "s/\[/['/"   $file

但它也提出了这种模式。

答案1

您可以删除第一行和最后一行

$ sed '1d;$d'

因此,您的输入文件只需包含您已完成的文本。如果您需要找到两者之间的部分[start]并按[end]如下方式执行:

$ sed -n '/start/,/end/p' $File | sed '1d;$d'

答案2

这满足您的要求吗?

sed -n '/^[start]/,/[end]/p'

与上面的等价的是:

sed '/^[start]/,/[end]/!d'

相关内容