如何打印两行之间的所有行,从第一行的一个模式开始,最后一行的另一个模式结束?
更新
我想提到这个文档是 HTML 是错误的。我似乎触动了神经,所以忘记了。除了打印文本文档的一部分之外,我并没有尝试解析 HTML 或使用它做任何事情。
考虑这个例子:
aaa
bbb
pattern1
aaa pattern2
bbb
ccc
pattern2
ddd
eee
pattern1
fff
ggg
Run Code Online (Sandbox Code Playgroud)
现在,我想打印的第一个实例之间的一切pattern1
开始在一行的开头,并pattern2
在另一条线的起点开始。我想在我的输出中包含pattern1
和pattern2
行,但我不想要该pattern2
行之后的任何内容。
pattern2
可在该部分的其中一行中找到。我不想就此打住,但这很容易通过用^
.
pattern1
出现在 之后的另一行pattern2
,但我根本不想看。我只是在寻找 的第一个实例pattern1
和 的第一个实例之间的所有内容pattern2
,包括在内。
sed -n '/^pattern1/,/^pattern2/p' inputfile.txt
Run Code Online (Sandbox Code Playgroud)
...但是在下一个实例再次开始打印 pattern1
我能想到的使用方法的grep -n ... | cut -f1 -d:
两次拿到两个号,然后tail
和head
得到我想要的部分,但我希望有一个更清洁的方式。也许awk
是完成这项任务的更好工具?
当我开始工作时,我希望把它绑成一个git
钩子。我也不知道该怎么做,但我仍在阅读和搜索:)
谢谢你。
在 中~/.kde/share/config/kdeglobals
,默认 Web 浏览器的值以感叹号开头。感叹号的用途是什么?
[General]
BrowserApplication[$e]=!sensible-browser
Run Code Online (Sandbox Code Playgroud)