【问题标题】:Combining only specified data into a single csv file仅将指定数据合并到单个 csv 文件中
【发布时间】:2017-09-24 11:22:59
【问题描述】:

我熟悉使用 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  |

编辑:所需的输出将是第 6 行,从第 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 |

欢迎所有反馈。

【问题讨论】:

  • 你想要的输出是什么?
  • 我刚刚在“编辑”下的问题中留下了答案。谢谢!
  • 您的数据实际上是这样的吗 - 使用|-,还是真的有逗号作为分隔符?你把它描述为csv...
  • 对所需输出的口头描述可能模棱两可。首选方法是显示您需要样本输入的确切输出。不要让我们猜测。 CSV,你想要col6,col10 还是col6 | col10 | 等?祝你好运。
  • 抱歉混淆:col6,col10..我会在上面澄清。

标签: linux csv sed cut


【解决方案1】:

如果它们真的是 CSV 文件,

awk -F, 'FNR>5 {print $6,$10}' *.csv > BigBoy.csv

【讨论】:

    【解决方案2】:

    使用sedcut

    sed '1,6d' file | cut -f6,10
    
    • sed '1,6d' 将删除直到第六行的所有行
    • cut -f6,10 将提取所需的列(使用制表符作为分隔符)

    一次性处理所有 csv 文件:

    sed '1,6d' *.csv | cut -f6,10 > output.csv
    

    【讨论】:

    • 这看起来很有希望,但会导致这个错误。我认为是因为字符编码? cut: stdin: 非法字节序列
    猜你喜欢
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 2019-06-02
    • 1970-01-01
    • 2020-02-22
    • 1970-01-01
    相关资源
    最近更新 更多