【问题标题】:Splitting data using awk but column name missing使用 awk 拆分数据但缺少列名
【发布时间】:2017-07-10 10:49:52
【问题描述】:

我设法得到了我想要的这个命令,但为什么我的列名被排除了?

这是我的命令

awk \
  -v DATE="$(date +"%d%m%Y")" \
  -F"," \
  'BEGIN{OFS=","} NR>1{ gsub(/"/,"",$1); print > "Assignment_"$1"_"DATE".csv"}' \
  Test_01012020.CSV

在我的原始文件中,test_01012020.csv 包含列:名称、班级、年龄等,但在我拆分文件后 Assignment_"$1"_"DATE".csv" 我只是得到值,例如:FARAH、CLASS A、24 等,但在新文件中不包括列名。我需要 列名 作为原始文件而不是拆分文件中的标题。谁能帮帮我?

【问题讨论】:

  • 请发布示例数据和所需的输出。

标签: linux unix awk multiple-columns filesplitting


【解决方案1】:

@FARAH:试试:

awk \
  -v DATE="$(date +"%d%m%Y")" \
  -F"," \
  'BEGIN{OFS=","} NR==1{print > "Assignment_"$1"_"DATE".csv"}} NR>1{ gsub(/"/,"",$1); print > "Assignment_"$1"_"DATE".csv"}' \
  Test_01012020.CSV

显然它不会打印标题,因为 NR>1 表示离开第一行,请在上面尝试,您也可以根据需要更改标题。

【讨论】:

  • 我想要列名示例名称、类别、年龄等。我有很多列名。如何手动添加? @RavinderSingh
  • FARAH: 试着把在 OFS 之后出现在 BEGIN 部​​分的标题打印出来,试着把它放在那里,然后它应该会飞。
  • 但如果我有很多列名,那就很难了。我需要手动输入吗? @RavinderSingh。有没有更简单的方法?
  • 好的,我以为你需要从 Input_file 中输入几个字段,我现在刚刚编辑了代码,它现在应该插入第一个留置权作为标题。
  • 我仍然无法包含我的列名。如何?请帮助我:'(@RavinderSingh
猜你喜欢
  • 1970-01-01
  • 2017-08-25
  • 2018-10-23
  • 2020-08-14
  • 2021-09-23
  • 1970-01-01
  • 2021-12-31
  • 2016-01-07
  • 2020-05-05
相关资源
最近更新 更多