首页 > 解决方案 > 如何使用 awk 打印头文件,然后将值分隔到 csv 文件中?

问题描述

我删除了我原来的问题,不得不采取不同的方法。

现在我有一个实际的制表符分隔值文件:

名称->(选项卡)地址->(选项卡)城市->(选项卡)状态等。

我想把这个文件转换成 csv。

但是新 csv 的第一行需要我可以输入的实际列名。(“姓名”、“地址”等)

如何使用 csv 执行此操作?

标签: awksed

解决方案


转述你的问题:

我有一个没有标题的制表符分隔文件。
我想将其转换为逗号分隔,同时添加一个标题。

这是一种方法(假设你的 shell 是 bash)

header=(Loc Name Address Apt City State Zip)
(IFS=$'\t'; echo "${header[*]}"; cat file) |
  awk -F'\t' -v OFS=',' '{$1 = $1; print}'

$1 = $1部分是一个 awk 习惯用法:除非数据已更新,否则 awk 不会使用新的字段分隔符重新计算行。

给定这个输入文件

$ cat -A file
US^IJohn^I742 Evergreen Terr.^I^ISpringfield^IMA^I01101$
US^IJane^I666 5th Avenue^I#1408^INew York^INY^I11101$

命令输出

Loc,Name,Address,Apt,City,State,Zip
US,John,742 Evergreen Terr.,,Springfield,MA,01101
US,Jane,666 5th Avenue,#1408,New York,NY,11101

推荐阅读