我有一个文本文件,如下所示:
random useless text
<!-- this is token 1 -->
para1
para2
para3
<!-- this is token 2 -->
random useless text again
Run Code Online (Sandbox Code Playgroud)
我想在令牌之间提取文本(当然不包括令牌).我尝试使用##和%%来提取数据,但它不起作用.我认为它不适用于操纵如此大的文本文件.有什么建议我怎么做?也许awk或sed?
Pau*_*ce. 39
不需要head
和tail
/ grep
或多次读取文件:
sed -n '/<!-- this is token 1 -->/{:a;n;/<!-- this is token 2 -->/b;p;ba}' inputfile
Run Code Online (Sandbox Code Playgroud)
说明:
-n
- 不要做隐式打印/<!-- this is token 1 -->/{
- 如果找到起始标记,那么
:a
- 标签"a"
n
- 阅读下一行/<!-- this is token 2 -->/q
- 如果它是结束标记,则退出p
- 否则,打印线ba
- 分支标签"a"}
万一Pet*_*lor 25
你可以提取它,包括带有sed的标记.然后用头部和尾部剥去令牌.
... | sed -n "/this is token 1/,/this is token 2/p" | head -n-1 | tail -n+2