【问题标题】:extract rows from one csv file based on column information in the other csv根据另一个 csv 中的列信息从一个 csv 文件中提取行
【发布时间】:2021-11-28 08:26:04
【问题描述】:

我有 2 个 csv 文件。我希望文件 1 的第 1 列的信息用于从另一个 csv 文件中提取行。 我的 file1.csv 的名称按列排列:

ENSG00000102977
ENSG00000100823
ENSG00000149311
ENSG00000175054
ENSG00000085224
ENSG00000178999
ENSG00000197299
ENSG00000139618
ENSG00000105173
ENSG00000175305
ENSG00000166226
ENSG00000163468
ENSG00000115484
ENSG00000150753
ENSG00000146731

第二个 csv 文件的名称以及相应的值按行排列。

ENSG00000102977 1083.82334384253    1824.50639384557    1962.86064714976    1367.60568624972

我写了一个 awk 脚本

`awk 'FNR == NR{f1[$1];next} $1 in f2 {print $1,$2,$3,$4,$5 $NF}' FS="," file1.csv  FS="," file2.csv`

但它返回时没有任何输出或错误。 请指导我哪里错了。由于没有错误,有点令人费解。

【问题讨论】:

  • 预期输出是什么?还有为什么所有 file2 内容都显示在您提到 corresponding values arranged in rows 的同一行中
  • 您的第一个块初始化数组f1,但在第二个块中您使用f2(空)数组。解决这个问题,事情应该会更好。

标签: csv awk


【解决方案1】:

尝试grep 的选项 -f - 从文件中读取模式。

grep -f fileWithPatterns.csv fileToExtractFrom.csv

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多