在bash中解析带有两个分隔符的不规则csv文件

时间:2014-11-04 02:06:09

标签: bash parsing csv awk delimiter

全部,

我希望使用以下行解析csv文件

00000000-0000-0265-2510-017132647704,5690OD64_0W24zjsK-5GLmwjntrVyLDZhrmS,1,11/1/2014 7:29:02 AM,23435830,11179745,868,360655,69844,64637,43755,,,122.111.9.107,36,28389,-1,11677,3166,,0,11,,Apple iPad,,-1,-1,MM_CLD_Standard_Agency_43755_Daily_141101_00.csv

我需要使用两个分隔符

来解析文件
"," & "_"

下划线出现在第二列和最后一列。目前我正在使用awk解析文件,如下所示,但是当你注意到col2中下划线的出现导致文件被不合需要地解析。我想知道如何在col2中转义下划线,以便我从最终列中拉出的字符串不受影响

awk -F "," 'BEGIN {OFS=","} {$23="";print $4,$3,$2,$6,FILENAME}' $i|tail -n +2|awk -F ",|_" 'BEGIN {OFS=","} {print $1,$2,$3,$4,$10}'

所需的输出为

11/1/2014 7:29:02 AM,1,5690OD64_0W24zjsK-5GLmwjntrVyLDZhrmS,11179745,141101

非常感谢,

1 个答案:

答案 0 :(得分:1)

awk -F, -v OFS=, '{n=split($NF, a, /_/); print $4, $3, $2, $6, a[n-1]}' <<END
x,5690OD64_0W24zjsK-5GLmwjntrVyLDZhrmS,1,11/1/2014 7:29:02 AM,y,11179745,z,...,MM_CLD_Standard_Agency_43755_Daily_141101_00.csv
END
11/1/2014 7:29:02 AM,1,5690OD64_0W24zjsK-5GLmwjntrVyLDZhrmS,11179745,141101