我有一个.csv文件,如下所示,我需要删除双引号之间的额外逗号并提取第2,第3和第7个字段。
示例输入:
John,qa,mv,tom,"principal, qa",6501234567,john@gmail.com
输出应如下所示:
qa,mv,john@gmail.com
答案 0 :(得分:2)
您想要使用正确的CSV解析器。例如,使用ruby:
echo 'John,qa,mv,tom,"principal, qa",6501234567,john@gmail.com' |
ruby -rcsv -ne '
row = CSV.parse_line($_)
puts CSV.generate_line([row[1],row[2],row[6]])
'
qa,mv,john@gmail.com
答案 1 :(得分:1)
awk / sed解决方案
awk '{print $2, $3, $7}' file |sed 's/"//g'
答案 2 :(得分:1)
或使用perl's
内置模块Test::Parsewords。
$ cat file
John,qa,mv,tom,"principal, qa",6501234567,john@gmail.com
$ perl -MText::ParseWords -lne '
@line = parse_line(",", 1, $_);
print join "," , @line[1,2,6]
' file
qa,mv,john@gmail.com
请注意,数组的索引值为0,因此请适当地使用索引来打印所需的值。
答案 3 :(得分:1)
假设恰好有两次出现"
awk -F',' -v OFS=',' '{sub(/".*"/,""); print $2,$3,$7;}' input.txt
输出:
qa,mv,john@gmail.com