【发布时间】:2019-12-28 12:30:34
【问题描述】:
AWK 解析 CSV,从单元格中提取子字符串并添加新列。如果没有匹配的模式(即没有要提取的子字符串),请将空白单元格添加到 CSV。
源数据(3 列示例,实际数据为 20+ 列)
"col1txtA","col2txtA","TYPE=ARRAY&ID=111&OPERATINGSYSTEM=WINDOWS%2010&DATE=0000"
"col1txtB","col2txtB","TYPE=ARRAY&ID=112&DATE=0000"
尝试的代码
awk -F, -v OFS=, '
NR>1
{$4=match($3,/OPERATINGSYSTEM=[^&]*/)}
1'
所需的输出数据(新列,即使结果为空白)
"col1txtA","col2txtA","TYPE=ARRAY&ID=111&OPERATINGSYSTEM=WINDOWS%2010&DATE=0000","WINDOWS%2010"
"col1txtB","col2txtB","TYPE=ARRAY&ID=112&DATE=0000",""
【问题讨论】:
-
您的任何双引号字段是否可以包含逗号、换行符或转义的双引号?
-
@EdMorton 是的,值可能包含逗号,它们不会有新行