双引号内的逗号分隔值

我有一个逗号分隔的数据文件,数据由""括起来:

 $ head file.txt "HD","Sep 13 2016 1:05AM","0001" "DT","273093045","192534" "DT","273097637","192534" .. 

我想获得第三列值( 0001 )分配给我的variables。

我试过了

 FILE_VER=`cat file.txt | awk -F',' '{if ($1 == "HD") print $3}'` 

我没有得到任何值分配给FILE_VER 。 请帮助我正确的语法。

你几乎在那里。 简单地删除引号应该足够好:

 foo=$(awk -F, '$1=="\"HD\""{gsub(/"/,"",$3);print $3}' file) 

另一个awk版本:

 awk -F'"' '$2 == "HD"{print $6}' file 

不知道这是最理想的方式,但工程:

 FILE_VER=$(awk -F',' '$1 == "\"HD\"" {gsub("\"","",$3); print $3}' file.txt) 
  1. 在报价之间测试HD
  2. 在打印结果之前删除报价

您可以更改文件以替换逗号和引号选项卡:

 tr -s '\"," "\t' < filename | awk '{print $3}' 

也许有一个解决方案只使用awk,但是这工作得很好!