Bash转换文件

时间:2017-05-19 19:39:40

标签: bash csv

我有.csv文件,我想通过bash脚本将其转换为.txt文件 该文件显示为.csv file

我想获得这种格式的txt文件

velocity
List<vector>
300 // number of point
(
(U0 U1 U2)
(U0 U1 U2)
...
...
...
)

非常感谢你的帮助

1 个答案:

答案 0 :(得分:1)

这有点难看,但它确实是我想到的伎俩:

 wc -l < Inlet.csv  | cat - Inlet.csv | awk  -F, 'BEGIN{printf "velocity\nList<vector>\n"} NR==1{printf "%s\n(\n",$1} NR>2{print "("$1 $2 $3")"}END{print ")"}'

执行以下操作:

  1. wc获取记录计数并将其传递给
  2. 将数字与文件进行汇总的cat。首先编号并将其传送到
  3. 以逗号-F,
  4. 分割的Awk
  5. 打印文件顶部的垃圾'BEGIN{printf "velocity\nList<vector>\n"}
  6. 如果它在第一条记录(计数)NR==1上,则会打印出来后跟一个换行符后跟一个parantheses,然后是另一个换行符{printf "%s\n(\n",$1}
  7. 如果我们超过标题(记录大于2)NR>2,那么我们打印出由副词{print "("$1 $2 $3")"}
  8. 包围的前三个字段
  9. 最后,在处理结束时,我们打印出最终的parantheses以关闭我们在第5步中的记录1时打印出的那个END{print ")"}