Bash - 如何用引号包装csv文件的第一行的值

时间:2017-09-16 17:03:37

标签: bash csv quotation-marks

csv文件的第1行的值由逗号分隔,如下所示:

$sci['tphy'][0] // First 'tphy' entry
$sci['tphy'][1] // Second 'tphy' entry
...
$sci['tchem'][0] // First 'tchem' entry
$sci['tchem'][1] // Second 'tchem' entry
...

但需要包含以下引文:

std::cin.get();

我想要一个仅用于解释第1行的命令,并保留文件的其余部分。

2 个答案:

答案 0 :(得分:2)

考虑这个测试文件:

$ cat file.csv
word1,word2,word3,word4,word5
12345,12346,12347,12348,12349

仅在第一行的项目周围加上引号:

$ sed '1 { s/^/"/; s/,/","/g; s/$/"/ }' file.csv
"word1","word2","word3","word4","word5"
12345,12346,12347,12348,12349

工作原理

  • 1 { ... }

    这告诉sed仅在第1行的大括号中执行命令。

  • s/^/"/

    这会在行的开头加上引号。

  • s/,/","/g

    这将使用quote-comma-quote替换每个逗号。

  • s/$/"/

    这会在行尾添加引号。

答案 1 :(得分:0)

awk 替代方法:

awk -F, 'NR==1{ gsub(/[^,]+/,"\"&\"",$0) }1' file
  • NR==1 - 仅考虑第一条记录