从带有内部逗号和引号的逗号分隔值中提取给定列

从带有内部逗号和引号的逗号分隔值中提取给定列

我有一个文件,其中的字段用逗号分隔。

一些示例输入:

col1,"1,2",col3
col1,"1,2,3",col3
col1,"1  2,3",col3
col1,"1 "2,3"",col3

现在,我必须获取第二列,以便我得到:

"1,2"
"1,2,3"
"1  2,3"
"1 "2,3""

cut -d, -f2 file没有做我想做的事。

那么,如何从上面的输入中检索第 2 列呢?

答案1

如果你有openoffice,你可以用它来打开文件,并在打开时将“分隔符值”设置为逗号。然后您可以复制第二列。

答案2

Python 有一个csv模块可以自动处理这个问题。例如,这里有一个简短的脚本,可以执行您想要的操作,读取stdin

import csv
import sys

for columns in csv.reader(sys.stdin, delimiter=","):
    print columns[1]

您可以将其保存在文件中,或者,从命令行调用它应该不会太难:

... | python -c "import csv, sys; print [c[1] for c in csv.reader(sys.stdin, delimiter=',')]"

相关内容