如何解决如何使用GREP过滤掉下面没有数据的行?
我的数据格式如下
-----------------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
解决方法
(对于提供的示例输入)似乎为“ 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。