我正在尝试从grep到sed管道行号 .
首先,我用sed提取我要打印的内容的起点和终点:
grep -n "Start" file1 | cut -d: -f 1 | head -n 1
grep -n "End" file1 | cut -d: -f 1 | head -n 1
现在我需要使用这些数字来打印从开始到结束的所有内容 . 例如 .
sed -ne '1,30w output1' file1
我不确定如何做到这一点,因为将行号输入sed将被视为“输入”对吗?
例:
Start
some text
some more text
End
Start
some text
some more text
End
因为不止一个开始和结束我从grep切割其余的行数 . 我应该结合grep和sed或者这不可能吗?
3 回答
这可能适合你(GNU sed):
这将写入
outputfile
第一个Start
和End
之间的行,然后退出并避免使用grep的需要 .如果你必须使用grep那么:
没有
grep
你可以做到这一点应该管用 .
看起来您想要从第一次出现的Start到第一次出现的End(包括 endpoints )进行打印 . 那只是: