Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
awk用引号连接csv列_Awk - Fatal编程技术网

awk用引号连接csv列

awk用引号连接csv列,awk,Awk,我想连接csv文件的两列。我对csv的引用有一些问题 "column one","column two","column three" "A","1","A1" "B","2","B2" "C","3","C3" 我使用以下命令行: awk -F, '{$2=$3" - "$x;for(i=1;i<=NF;i++)if(i!=x)f=f?f FS $i:$i;print f;f=""}' x=3 file.csv 我想删除两列“3**”-“**C3”的内部引号Awk解决方案: awk

我想连接csv文件的两列。我对csv的引用有一些问题

"column one","column two","column three"
"A","1","A1"
"B","2","B2"
"C","3","C3"
我使用以下命令行:

awk -F, '{$2=$3" - "$x;for(i=1;i<=NF;i++)if(i!=x)f=f?f FS $i:$i;print f;f=""}' x=3 file.csv

我想删除两列“3**”-“**C3”的内部引号
Awk
解决方案:

awk 'BEGIN{ FS=OFS="\042,\042" }{ $2=$2" - "$3; NF=2 }1' file.csv
输出:

"A","1 - A1"
"B","2 - B2"
"C","3 - C3"
Gnu sed: 测试:

kent$  cat f
"A","1","A1"
"B","2","B2"
"C","3","C3"

kent$  sed 's/","/ - /2' f
"A","1 - A1"
"B","2 - B2"
"C","3 - C3"

使用GNU
awk

$ awk -F, -v OFS=, 'NR==1{NF--} {print gensub(/","/," - ",2)}' file

"column one","column two"
"A","1 - A1"
"B","2 - B2"
"C","3 - C3"

对于第一行,删除最后一个字段。否则,用连字符替换带引号的逗号。

预期的输出是什么?谢谢Kent。记住你的解决方案,但我想用AWK。
kent$  cat f
"A","1","A1"
"B","2","B2"
"C","3","C3"

kent$  sed 's/","/ - /2' f
"A","1 - A1"
"B","2 - B2"
"C","3 - C3"
$ awk -F, -v OFS=, 'NR==1{NF--} {print gensub(/","/," - ",2)}' file

"column one","column two"
"A","1 - A1"
"B","2 - B2"
"C","3 - C3"