【发布时间】:2020-09-03 10:28:32
【问题描述】:
我有数百个 CSV 文件。每个 CSV 文件都与此类似:
| KEYWORD | NUMBER OF COMPS | AVGE M E (K) | GS/M | EST. A SE/M | C CORE |
|---------|-----------------|--------------|------|-------------|--------|
| Apples | 311 | 12 | N/A | <100 | 10 |
| Bananas | >1,200 | 737 | N/A | 490 | 88 |
| Oranges | 48 | 184 | N/A | N/A | 1 |
| Fruits | 161 | 94 | N/A | - | 6 |
(我以表格形式发布,以使其更具可读性,但 CSV 数据位于本文底部)。
所有 CSV 文件都有相同的标题行。只是数据不同。
我想做以下事情:
- 将所有 CSV 文件合并在一起,但只有 1 个标题行。
- 省略
EST. A SE/M(第 5 列)包含以下任何数据的任何行:<100、N/A或-
数据说明
有时 CSV 文件中的部分甚至所有单元格都用引号引起来。 其他时候他们不是。 有时第一列(关键字)可能包含多个单词或重音字符。到目前为止我的代码
此代码将所有 CSV 文件合并为 1,没有一个标题
awk '(NR == 1) || (FNR > 1)' *.csv > ^0-output.csv
这很好用。
但是,我不确定如何在合并后删除不需要的行。 到目前为止,我有这个:
awk '$5 !~ /(<100|N\/A|-)/' ^0-output.csv > ^0-output.csv
但是当我使用这段代码时,它只会产生一个空白文件。 另外,我不确定是否有办法将它集成到第一行,所以它用一个命令完成所有事情。
注释
以下是 CSV 格式的数据外观Sample1.csv
KEYWORD,NUMBER OF COMPS,AVGE M E (K),GS/M,EST. A SE/M,C CORE
Apples,311,12,N/A,<100,10
Bananas,">1,200",737,N/A,490,88
Oranges,48,184,N/A,N/A,1
Fruits,161,94,N/A,-,63
Sample2.csv
KEYWORD,NUMBER OF COMPS,AVGE M E (K),GS/M,EST. A SE/M,C CORE
Dino,588,67,N/A,888,234
Thunder,">1,200",211,N/A,<100,77
Ninja,95,37,N/A,-,878
Sample3.csv
KEYWORD,NUMBER OF COMPS,AVGE M E (K),GS/M,EST. A SE/M,C CORE
Blur,84,2454,N/A,-,234
Sample4.csv
"KEYWORD","NUMBER OF COMPS","AVGE M E (K)","GS/M","EST. A SE/M","C CORE"
"hedgehog rolls ròund",32,481,N/A,"878",13
"Clever Fox jumps Hîgh",233,83,N/A,"<100",12
"Bear à lot",122,35,N/A,"-",11
"kitten hîgh life","121","673","32","N/A","15"
请注意:将使用已完成脚本的实际文件将具有多种文件名。他们不会总是遵循样本 1、样本 2 等的模式。
预期输出
预期输出:(CSV 格式)
KEYWORD,NUMBER OF COMPS,AVGE M E (K),GS/M,EST. A SE/M,C CORE
Bananas,">1,200",737,N/A,490,88
Dino,588,67,N/A,888,234
"hedgehog rolls ròund",32,481,N/A,"878",13
(注意:当最终的 CSV 文件在 Apple Numbers 中打开时,预期输出是否保留换行引号并不重要)
预期输出:(可读格式)
| KEYWORD | NUMBER OF COMPS | AVGE M E (K) | GS/M | EST. A SE/M | C CORE |
|---------|-----------------|--------------|------|-------------|--------|
| Bananas | >1,200 | 737 | N/A | 490 | 88 |
| Dino | 588 | 67 | N/A | 888 | 234 |
| hedgehog rolls ròund | 588 | 67 | N/A | 888 | 234 |
环境: 我正在使用 Mac OS X 10.14.6。我无法安装其他版本的 awk。
【问题讨论】: