【发布时间】:2020-03-11 11:42:15
【问题描述】:
您好,我有一个以下格式的 CSV 数据
ColumnHeader1,ColumnHeader2,ColumnHeader3
valcol1p1,name=testapp1 environment=dev coldata=My_Test_Logs @$ 192.168.1.1 @$ r1 @$ r2 @$ POST API ,valcol3p1
valcol1p1,name=testapp2 environment=qa coldata=My_Test_Logs @$ 192.168.1.1 @$ r1 @$ r2 @$ GET API ,valcol3p1
我需要在 My_Test_Logs 之后提取 ColumnHeader2 列中的数据,并在分隔符“@$”之后解析数据。所以对于每个 csv 行,我会得到 4 个值。 我需要将它们与相同的分隔符值“@$”连接起来并放在 CSV 中。
输出会是这样的
现在我已经部分解决了。
喜欢获取ColumnHeader2列数据
awk -F "\"*,\"*" '{print $2}' Mytest.csv
或使用多个字符分隔符仅取前 x 个字段:
awk -F"[@][$]" '{print $1,$2,$3,$4}' Mytest1.csv
其中 MyTest1 包含提取的 Columnheader2 数据的输出
但是提取然后连接的整个逻辑一起给出了一些问题。有人可以在这里提供帮助吗。我需要一个脚本来处理我的 CSV 并将结果写入另一个 csv,而不是在两者之间使用多个 csv 或文本输出?
【问题讨论】:
-
该样本数据的输出应该是什么?
-
类似这样的东西..仅显示一行,但实际上它将是来自 csv 192.168.1.1 @$ r1 @$ r2 @$ GET API 的所有行
-
请编辑示例输出到问题的可读性。
-
你在正确的轨道上,你只需要设置OFS变量
awk -F ',| *@[$] *' -v OFS='@$' '{print $3,$4,$5}' sample.txt(这结合了两个awk命令) -
@pythonNinja 好吧,我不打算写答案。但是,你去stackoverflow.com/a/60636646/939457
标签: linux bash csv delimiter fileparsing