Shell 如何筛选以前的冗余条件

Shell 如何筛选以前的冗余条件,shell,sed,Shell,Sed,这是我练习sed的示例test.txt 这是我的问题 我怎样才能找到bash shell的红色框架 我只能在下面打字 如何修改以过滤冗余“vh1” BillyLiu:Test billyliou$ sed -n '/vh1/,/vh2/p' test.txt BillyLiu:Test billyliou$ cat test.txt vh1 --- vh1 --- vh1 vh1 vh1 vh1 asdsd sdsdsds dsdskjskflkd sdsfsmdfk vh2 ----

这是我练习sed的示例test.txt

这是我的问题

我怎样才能找到bash shell的红色框架

我只能在下面打字

如何修改以过滤冗余“vh1”

BillyLiu:Test billyliou$ sed -n '/vh1/,/vh2/p' test.txt 

BillyLiu:Test billyliou$ cat test.txt 
vh1
---
vh1
---
vh1
vh1
vh1
vh1
asdsd
sdsdsds
dsdskjskflkd
sdsfsmdfk
vh2

----
don't want to be found
----

vh1
asdjskldjkalsjd
skdjksjkjk
xijcviorm,nre
vh2
也许吧

sed-En'H${g;s/(*)vh1.*vh2/\1/;p;}'test.txt
将整个文件读入保留空间。
s//
模式中,前导的
*
是贪婪的,因此这将匹配文件中最后一个“vh1…vh2”

等价的perl

perl-0777-pe's/(*)vh1.+vh2/$1/s'test.txt
需要
s
标志,以便点匹配换行符。

这可能适用于您(GNU-sed):

将所有行追加到保留空间

如果线路包含
vh1
,则重置保持空间


如果一行包含
vh2
,请将其替换为保留空间,如果该行也包含
vh1
,请打印保留空间。

您能告诉我们您尝试了什么吗?我们要求你自己努力解决问题。我只想显示“红框”,但在这种情况下,它也会显示其他vh1。。。。。这是我的问题
sed -n 'H;/vh1/h;/vh2/{g;/vh1/p}' file