![分成第一列名称的文件](https://linux22.com/image/136952/%E5%88%86%E6%88%90%E7%AC%AC%E4%B8%80%E5%88%97%E5%90%8D%E7%A7%B0%E7%9A%84%E6%96%87%E4%BB%B6.png)
我有这个 CSV 文件:
"Product ID";"Product Name";"Price";"Description";
"11;"Example";"200";"Descripcion here...";
"21;"Example2";"300";"Some here...";
我想将其逐行拆分,并将它们保存到具有第一列名称的文件中。
例子:
11.csv {"11;"Example";"200";"Descripcion here...";}
21.csv {"21;"Example2";"300";"Some here...";}
我使用这个命令:
$ split -l 1 file.txt new
但这会创建 newa 、newb、newc、newd 等!?
答案1
鉴于
$ cat > file.csv
"Product ID";"Product Name";"Price";"Description";
"11;"Example";"200";"Descripcion here...";
"21;"Example2";"300";"Some here...";
然后
$ awk -F';' 'NR>1 {print "{" $0 "}" > substr($1,2) ".csv"}' file.csv
结果是
$ head ??.csv
==> 11.csv <==
{"11;"Example";"200";"Descripcion here...";}
==> 21.csv <==
{"21;"Example2";"300";"Some here...";}
答案2
$ awk -F';' '{file=substr($1,2)".csv";if(NR>1){print $0 > file}}' inputFile
用于substr
获取文件名并附加到.csv
它,并NR>1
忽略标题,最后写入文件。
$ head *csv
==> 11.csv <==
"11;"Example";"200";"Descripcion here...";
==> 21.csv <==
"21;"Example2";"300";"Some here...";