![sed 或 awk 在 2 个模式之间打印[不包括模式]](https://linux22.com/image/156872/sed%20%E6%88%96%20awk%20%E5%9C%A8%202%20%E4%B8%AA%E6%A8%A1%E5%BC%8F%E4%B9%8B%E9%97%B4%E6%89%93%E5%8D%B0%5B%E4%B8%8D%E5%8C%85%E6%8B%AC%E6%A8%A1%E5%BC%8F%5D%20.png)
我有以下文字..
[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'