Macos 为什么在CSV中提取列的awk后面有双引号?

Macos 为什么在CSV中提取列的awk后面有双引号?,macos,shell,csv,awk,Macos,Shell,Csv,Awk,我有一个像这样的csv文件 "cnt","phr" "3679650","URL1" "844588","URL2" "572854","URL3" "469274","URL4" 我在谷歌上找到了这个命令 awk -F "\"*,\"*" '{print $2}' test.csv 我得到这个结果 URL1" URL2" URL3" URL4" 我怎么才能得到它 URL1 URL2 URL3 URL4 我正在使用OSX您可以使用此awk命令,并将字段分隔符作为逗号或双引号: awk -

我有一个像这样的csv文件

"cnt","phr"
"3679650","URL1"
"844588","URL2"
"572854","URL3"
"469274","URL4"
我在谷歌上找到了这个命令

awk -F "\"*,\"*" '{print $2}' test.csv
我得到这个结果

URL1"
URL2"
URL3"
URL4"
我怎么才能得到它

URL1
URL2
URL3
URL4

我正在使用OSX

您可以使用此awk命令,并将字段分隔符作为逗号或双引号:

awk -F '[",]+' 'NR>1{print $3}' file.csv

URL1
URL2
URL3
URL4
或者使用带逗号的
gsub
作为字段分隔符

awk -F, 'NR>1{gsub(/"/, ""); print $2}' file.csv

URL1
URL2
URL3
URL4

您可以将此awk命令与字段分隔符一起用作逗号或双引号:

awk -F '[",]+' 'NR>1{print $3}' file.csv

URL1
URL2
URL3
URL4
或者使用带逗号的
gsub
作为字段分隔符

awk -F, 'NR>1{gsub(/"/, ""); print $2}' file.csv

URL1
URL2
URL3
URL4

awk的替代方案

$ tr -d '"' <file | cut -d, -f2 | sed 1d
URL1
URL2
URL3
URL4

$tr-d'”awk的替代方案

$ tr -d '"' <file | cut -d, -f2 | sed 1d
URL1
URL2
URL3
URL4

$tr-d'”您得到该引号的原因是因为它不是您的字段分隔符。您定义的FS包含一个逗号

有一些复杂的正则表达式可用于对CSV数据使用awk,但我通常建议使用适当的CSV解析器来解析CSV数据。Ruby有一个易于使用的工具:

ruby -rcsv -e 'CSV.foreach(ARGV.shift) {|row| puts row[1]}' file
哪个输出

phr
URL1
URL2
URL3
URL4

您得到该报价的原因是因为它不是字段分隔符。您定义的FS包含一个逗号

有一些复杂的正则表达式可用于对CSV数据使用awk,但我通常建议使用适当的CSV解析器来解析CSV数据。Ruby有一个易于使用的工具:

ruby -rcsv -e 'CSV.foreach(ARGV.shift) {|row| puts row[1]}' file
哪个输出

phr
URL1
URL2
URL3
URL4