bash - 如何按特定顺序提取行
问题描述
我有一个文件:
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
中执行此操作?sed
awk
解决方案
使用 GNU awk:
awk -v RS='column1: [0-9]+\ncolumn2: [0-9]+\nkolumn3: [0-9]+\n' '{printf RT}' file
记录分隔符RS
是一个正则表达式,用于捕获 3 个连续的行。
唯一的语句是打印记录终止符RT
,忽略所有未被RS
.
推荐阅读
- vue.js - 对于选项卡中的每个 TabStripItem,我希望宽度由标签中文本的长度定义
- google-cloud-platform - 如何在 Dialogflow 中切换语言?
- javascript - Primefaces 通过 javaScript 调用 p:ConfirmDialog
- c++ - 分段错误(核心转储) - 不知道为什么
- git - 如何使用 Rust git2 crate 执行“git pull”?
- c++ - 调试断言失败:is_block_type_valid(header->_block_use) 复制 ABC 的引用
- c# - iOS Xamarin 上的实体框架连接在屏幕关闭时关闭
- github - 如何将下载的 Github Repo 推回来?
- c++ - 具有相同名称的类的构造函数继承
- android - 自定义控件:滑开时按钮释放事件不会触发