【发布时间】:2019-07-23 13:15:56
【问题描述】:
我有一个 CSV 文件需要拆分,以提取每条记录的 ith 列值。
这是一个示例file.csv。
Column1,Column2,Column3
"value1_1_a, value1_1_b",value1_2,value1_3
"value2_1_a, value2_1_b, value2_1_c",value2_2,value2_3
一般来说,如果我想提取(例如)Column2 值,我会选择如下命令:
cat file.csv | awk -F, '{print $2}'
得到如下结果:
Column2
value1_2
value2_2
尽管如此,由于Column1 值包含具有可变编号, 分隔符的字符串,因此我得到了错误的数据。因此,我该如何使用awk 来实现我的目的?
【问题讨论】:
-
如果只有第一列存在嵌入分隔符的问题,并且所有记录具有相同数量的字段,则从
NF向后工作可能比处理FPAT更容易。例如。{ print $(NF - 1) } -
感谢@jas,理论上可行,但包含字符串的列也可能位于列列表的中间。
标签: string bash csv awk separator