当前位置: 首页 > 知识库问答 >
问题:

使用cat或tail组合CSV文件时是否忽略行?

陶高峯
2023-03-14

我一直在使用cat合并一堆csv文件,然后使用排序删除复制文件,然后导入到MySQL。与处理大量csv文件一样肮脏的工作可能是一帆风顺的,直到我发现我的一些数据没有进入数据库。

我发现在合并文件的过程中,在某些情况下,列名(csv文件的第一行)被抛到了其他列中。结果是,当我使用排序删除重复并吐出一个新文件时,它只输出到csv文件中列名被抛入新未使用列的行。

我使用猫如下:

  cat *.csv >combined.csv

并排序为

  sort -u combined.csv -o cleaned.csv

然后我让我的方式尾巴这是有希望的:

tail -n+2 *.csv >combined.csv

然而,通过使用tail,我得到的实际文件名就在合并的每个csv文件之前的一行中

==> first-file.csv <==
red     | 1234
yellow  | 5678 
blue    | 9123
green   | 4567
orange  | 8901
black   | 2345
white   | 6789
==> second-file.csv <==
brown   | 1234
gray    | 5678 
tan     | 9123
burgundy| 4567

而不是:

red     | 1234
yellow  | 5678 
blue    | 9123
green   | 4567
orange  | 8901
black   | 2345
white   | 6789
brown   | 1234
gray    | 5678 
tan     | 9123
burgundy| 4567

在此,任何帮助都将不胜感激。我将不得不再次检查所有这些文件,所以这次我需要把它弄对。

如果需要澄清,请告诉我。我在mac上运行,在linux上进行生产,理想情况下,我希望使用cat、sort、tail或类似工具来实现这一点。

编辑:要重新创建通用数据的问题,只需将以下数据以csv格式保存在两个单独的文件中。我把它们命名为test-1。csv和test-2。csv。

color, votes, trend
"red", "1234", "1,3,3,4"
"yellow", "5678", "2,3,3,4"
"blue", "9123", "2,3,3,4"
"green", "4567", "5,3,3,4"
"orange", "8901", "2,2,3,4"
"black", "2345", "2,1,3,4"
"white", "6789", "2,5,3,4"
"brown", "1234", "2,7,3,4"
"gray", "5678", "8,2,3,4"
"tan", "9123", "9,3,3,4"
"burgundy", "4567", "2,5,1,4" 

然后运行:

tail -q -n +2 *.csv > combined.csv

共有1个答案

谢泉
2023-03-14

默认情况下,每当有更多的一个输入文件时,尾部输出带有关联文件名的头。要放弃此功能,请使用-q

-q, --quite, --silent
    never output headers giving file names

您的命令行应该如下所示:

tail -q -n +2 *.csv > combined.csv
 类似资料:
  • 抱歉,如果以前有人问过这个问题,但我花了很长时间搜索都没有成功。 我有一个面板,我试图使用GridBagLayout添加一些组件。 问题是,出于某种原因,我无法理解-我试图添加的JTextArea似乎忽略了分配给它的宽度-它似乎接受高度没有问题。 除了文本区域之外,所有组件都添加得很好——文本区域的宽度应该为3,但显示宽度为1。 我不明白为什么会这样,有人能帮忙吗? 提前感谢您的帮助。 代码:(编

  • 本文向大家介绍Git 检查文件是否被忽略,包括了Git 检查文件是否被忽略的使用技巧和注意事项,需要的朋友参考一下 示例 该git check-ignore命令报告Git忽略的文件。 您可以在命令行上传递文件名,git check-ignore并将列出被忽略的文件名。例如: 在此,.gitignore中仅定义了* .o文件,因此Readme.md未在.git的输出中列出git check-igno

  • 样本数据- Header1,full_name,header3,header4 > 20,“Bob,XXX”,“Test”,30 20,“Evan”s,YYY“,”Test“,30 20,“Tom,ZZZ”,“Test”,30 第二行读起来不像预期的那样。因为full_name列值中有一个双引号。 我想忽略这类案件。任何建议都将不胜感激。 使用openCSV Java api进行解析。 编辑: 我

  • 问题内容: 假设您具有以下pyspark DataFrame: 接下来的两个代码块应该做同样的事情-即,如果不是,则返回该列的大写。但是,第二种方法(使用)会产生错误。 方法1 :使用 方法2 :在内部使用 这给了我。为什么调用中的检查似乎被忽略了? 我知道我可以改变我要避免这种错误,但我想知道为什么它的发生。 完整回溯 : 问题答案: 您必须记住,Spark SQL(与RDD不同)不是您所看到的

  • 问题内容: 我有一个由命令(使用任务)生成的文件。我不想将其添加到git存储库中,也不想添加到NPM项目中。 假设文件名是,我将其添加到文件中。 这足以避免将其上传到NPM注册表中吗? 我知道我可以添加肯定会忽略该文件的文件,但是如果已经这样做,则不会添加它。 问题答案: 如果项目同时具有和文件,则npm将 仅 使用该文件。 从文档中: 使用文件将东西从包装中取出。如果没有文件,但有 是 一个文件

  • 我试图让zabbix前端与nginx一起工作。这是我的nginx配置: /zabbix中的php脚本正在工作!但是像未提供(404)。在错误日志中是这样的: 所以我们可以看到,nginx正在主根目录中查找文件,而不是在别名目录中查找文件。 为什么会这样,我该如何解决?