【发布时间】:2016-09-24 15:29:46
【问题描述】:
我的任务是从一个非常丑陋的 csv 文件中提取某些值。
csv 格式如下:
command1=value1, command2=value2, etc etc.
到目前为止,我正在 grep-ing 查找所需的命令,然后通过 cut -f 2 -d '=' 管道返回值。
我遇到的问题是其中一个字段是文本,并且可以有多个值,这些值也用逗号分隔。要添加另一个曲线球,当(且仅当)其中一个值中有空格时,该字段将用双引号引起来,因此我要提取的值可能是:
command=value,..
command=value1,value2,..
command="value 1",..
command="value 1, value 2",..
(其中 .. 是日志文件中的其他值或行尾)
我以为我已经通过简单地使用 grep -oP '(?
但我现在发现字段出现的顺序不一致,因此文件可能是:
command1=value1, command3=value3, command2=value2
如果 command2 可能用双引号括起来也可能不括在双引号中,我如何获取它的值,它也可能包含逗号。我正在努力看看它是如何可能的,因为 grep 将如何知道什么是值中断以及下一个字段是什么。
感激地接受任何帮助。
【问题讨论】:
-
您所描述的内容听起来很容易用一个小而简单的 awk 脚本来处理,但您必须发布一些简洁、可测试的示例输入和预期的输出,以便我们能够为您提供帮助。