仅将指定数据合并到单个 csv 文件中
Combining only specified data into a single csv file
我熟悉使用 cat 组合 csv 文件。我也很熟悉在指定行时这样做。
不过,我需要知道的是如何仅组合在 csv 文件中以指定行开头的指定列。我使用的 csv 文件有点乱,但它们都是相同的格式。我无法控制它们的输出,因此不得不弄清楚如何合并几百个文件(希望不是手动)。
数据示例:
| Column1 | Column3 | Column4 | Column5 | Column6 | Column7 | Column8 | Column9 | Column10 | Column11 |
|--------------|---------|--------------|---------|--------------|---------|---------|---------|--------------|----------|
| garbage data | | garbage data | garbage | | | | garbage | | |
| garbage data | | garbage data | | | | | | | |
| garbage data | | garbage data | | | | | | | |
| garbage data | | garbage data | | | | | | | |
| garbage data | | garbage data | | garbage | garbage | | | | |
| garbage data | | garbage data | | good data 1 | | | | good data 1 | garbage |
| garbage data | | garbage data | | good data 2 | | | | good data 2 | garbage |
| garbage data | | garbage data | | good data 3 | | | | good data 3 | garbage |
| garbage data | | garbage data | | good data 4 | | | | good data 4 | garbage |
| garbage data | | garbage data | | good data 5 | | | | good data 5 | garbage |
| garbage data | | garbage data | | good data 6 | | | | good data 6 | garbage |
| garbage data | | garbage data | | good data 7 | | | | good data 7 | garbage |
| garbage data | | garbage data | | good data 8 | | | | good data 8 | garbage |
| garbage data | | garbage data | | good data 9 | | | | good data 9 | garbage |
| garbage data | | garbage data | | good data 10 | | | | good data 10 | garbage |
EDIT:所需的输出将是第 6 行,其中 "good data" 从第 6 列和第 10 列开始向下(每个文件有 1000 到 2000 行)。
编辑 2:所需输出
| Column10 | Column6 |
|--------------|--------------|
| good data 1 | good data 1 |
| good data 2 | good data 2 |
| good data 3 | good data 3 |
| good data 4 | good data 4 |
| good data 5 | good data 5 |
| good data 6 | good data 6 |
| good data 7 | good data 7 |
| good data 8 | good data 8 |
| good data 9 | good data 9 |
| good data 10 | good data 10 |
欢迎所有反馈。
使用sed
和cut
:
sed '1,6d' file | cut -f6,10
sed '1,6d'
将删除第六行之前的所有行
cut -f6,10
将提取所需的列(使用制表符作为分隔符)
一次性处理所有csv文件:
sed '1,6d' *.csv | cut -f6,10 > output.csv
如果它们真的是 CSV 文件,
awk -F, 'FNR>5 {print ,}' *.csv > BigBoy.csv
我熟悉使用 cat 组合 csv 文件。我也很熟悉在指定行时这样做。
不过,我需要知道的是如何仅组合在 csv 文件中以指定行开头的指定列。我使用的 csv 文件有点乱,但它们都是相同的格式。我无法控制它们的输出,因此不得不弄清楚如何合并几百个文件(希望不是手动)。
数据示例:
| Column1 | Column3 | Column4 | Column5 | Column6 | Column7 | Column8 | Column9 | Column10 | Column11 |
|--------------|---------|--------------|---------|--------------|---------|---------|---------|--------------|----------|
| garbage data | | garbage data | garbage | | | | garbage | | |
| garbage data | | garbage data | | | | | | | |
| garbage data | | garbage data | | | | | | | |
| garbage data | | garbage data | | | | | | | |
| garbage data | | garbage data | | garbage | garbage | | | | |
| garbage data | | garbage data | | good data 1 | | | | good data 1 | garbage |
| garbage data | | garbage data | | good data 2 | | | | good data 2 | garbage |
| garbage data | | garbage data | | good data 3 | | | | good data 3 | garbage |
| garbage data | | garbage data | | good data 4 | | | | good data 4 | garbage |
| garbage data | | garbage data | | good data 5 | | | | good data 5 | garbage |
| garbage data | | garbage data | | good data 6 | | | | good data 6 | garbage |
| garbage data | | garbage data | | good data 7 | | | | good data 7 | garbage |
| garbage data | | garbage data | | good data 8 | | | | good data 8 | garbage |
| garbage data | | garbage data | | good data 9 | | | | good data 9 | garbage |
| garbage data | | garbage data | | good data 10 | | | | good data 10 | garbage |
EDIT:所需的输出将是第 6 行,其中 "good data" 从第 6 列和第 10 列开始向下(每个文件有 1000 到 2000 行)。
编辑 2:所需输出
| Column10 | Column6 |
|--------------|--------------|
| good data 1 | good data 1 |
| good data 2 | good data 2 |
| good data 3 | good data 3 |
| good data 4 | good data 4 |
| good data 5 | good data 5 |
| good data 6 | good data 6 |
| good data 7 | good data 7 |
| good data 8 | good data 8 |
| good data 9 | good data 9 |
| good data 10 | good data 10 |
欢迎所有反馈。
使用sed
和cut
:
sed '1,6d' file | cut -f6,10
sed '1,6d'
将删除第六行之前的所有行cut -f6,10
将提取所需的列(使用制表符作为分隔符)
一次性处理所有csv文件:
sed '1,6d' *.csv | cut -f6,10 > output.csv
如果它们真的是 CSV 文件,
awk -F, 'FNR>5 {print ,}' *.csv > BigBoy.csv