【发布时间】:2012-02-09 13:27:43
【问题描述】:
我有单独行形式的文本,其中每行都有类似 CSV 的格式:
SOME BUNCH OF TEXT, FIELD_A: 12, FIELD_B: 0.2321, FIELD_C: 12:10:08 2011/07/22, FIELD_D: 656
字段的顺序始终相同,但有些字段可能不存在。感兴趣的字段之间可以有其他字段,例如与上面的行相比,我也可以得到以下信息:
SOME BUNCH OF TEXT, FIELD_A: 12, NOT_INTERESTED: 235, FIELD_B: 0.2321, FIELD_C: 12:10:08 2011/07/22, FIELD_D: 656, FIELDS
作为处理此文本的结果,我希望有一个干净的 CSV 文件,其中一个接一个地指定我的字段:
12,0.2321,12:10:08 2011/07/22,656
如果某些字段不存在,那么我想简单地省略值(例如 FIELD_B 不存在):
12,,12:10:08 2011/07/22,656
如何使用 sed、perl 或 awk 等命令执行此操作?
我尝试使用 perl -pe 's/^.*?(FIELD_A: (.*?),)?.*?$/\2/' 提取单个字段并失败 - 正则表达式会忽略我的字段,即使它存在
【问题讨论】:
标签: regex linux unix text-processing