我的数据格式如下
-----------------data1-------------
that- 485
that- 234
that- 789
-----------------data2-------------
that- 343
-----------------data3-------------
this+ 123
this+ 509
this+ 837
-----------------data4-------------
that+159
-----------------data5-------------
this+151
我怎样才能只获得其中带有“ this”的行以及数据线?我的输出应该像:
-----------------data3-------------
this+ 123
this+ 509
this+ 837
-----------------data5-------------
this+151
我尝试过grep 'data\|this'
,但这也包括数据行,即使它下面没有'this'也是如此。使用此命令,输出如下所示:
-----------------data1-------------
-----------------data2-------------
-----------------data3-------------
this+ 123
this+ 509
this+ 837
-----------------data4-------------
-----------------data5-------------
this+151
答案 0 :(得分:0)
(对于提供的示例输入)似乎为“ this”和前一行(选项-B1
)进行了grepping:
grep -B1 this
按原样获取输出
-----------------data3-------------
this+ 123
this+ 509
this+ 837
--
-----------------data5-------------
this+151
如果您不喜欢分隔线--
,则可以通过第二遍过滤。
grep -B1 this | grep -v "^--$"
即仅保留不匹配(选项-v pattern
)的分隔符。
然后您将得到所需的内容:
-----------------data3-------------
this+ 123
this+ 509
this+ 837
-----------------data5-------------
this+151