首页 > 解决方案 > 如何按特定顺序提取行

问题描述

我有一个文件:

column1: 23
column2: 42
kolumn3: 24
column1: 24
column2: 35
kolumn3: 46
column1: 25
column2: 42
column1: 35
column2: 45
kolumn3: 52

我希望我的输出是:

column1: 23
column2: 42
kolumn3: 24
column1: 24
column2: 35
kolumn3: 46
column1: 35
column2: 45
kolumn3: 52

输出必须是column1, column2,kolumn3顺序。删除不按此顺序的所有内容。

是否可以在或grep中执行此操作?sedawk

标签: bashawksedgrep

解决方案


使用 GNU awk:

awk -v RS='column1: [0-9]+\ncolumn2: [0-9]+\nkolumn3: [0-9]+\n' '{printf RT}' file

记录分隔符RS是一个正则表达式,用于捕获 3 个连续的行。

唯一的语句是打印记录终止符RT,忽略所有未被RS.


推荐阅读