【问题标题】:I am having csv file can I know how to replace spaces in column heading with underscore in linux我有 csv 文件我可以知道如何在 linux 中用下划线替换列标题中的空格吗
【发布时间】:2019-07-28 22:50:25
【问题描述】:

我的实际输入是这样的,在列标题中我需要linux命令用下划线替换空格

输入:

patient name age number of days
 santhosh    24      20
 saravanan    23     25

预期输出:

 patient_name age number_of_days
   santhosh    24      20
   saravanan   23      25

【问题讨论】:

  • 请在帖子中提及您为解决自己的问题所做的尝试,然后告诉我们。
  • 实际上,我的表由 20 列和 1500 条数据组成。我的问题是这些列名之间有空格。我需要用下划线替换这些空格。
  • 先展示自己的努力。另外文件是用什么分隔的?我们如何避免像name_age这样添加下划线?
  • 您确定您的输入是 CSV 吗?您发布的示例中没有逗号...
  • 使用 awk,看看使用 printf 和格式(如“%9s”)和字段(如 $9)。试一试,我们会在此基础上提供帮助

标签: perl unix awk sed


【解决方案1】:

好的,假设你的 CSV 是制表符分隔的,我建议你想要的是 split。

while ( <> ) {
   print join "\t", map { s/\s+/_/gr } split /\t/; 
}

这将在选项卡上拆分,通过用下划线替换一个或多个空格来转换每个“条目”,并打印结果行。

【讨论】:

  • 我的 csv 文件是逗号分隔符
  • 你的例子不是。您问题中的示例数据是制表符分隔的。不管怎样——你可以把\t换成,,它的工作原理是一样的。
  • 这是另一种方式。头-1 npidata.csv | perl -pe "s/ /_/g" >npidata1.csv
  • 好吧,你可以做sed -i 's/ /_/g' npidata.csv'。但是sed 在这种情况下对分隔符是视而不见的,并且不会将其作为 csv 而是纯文本来处理。
猜你喜欢
  • 1970-01-01
  • 2022-07-05
  • 1970-01-01
  • 2018-01-28
  • 1970-01-01
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
  • 2014-01-14
相关资源
最近更新 更多