csv - 如何表示其他文件上的文件内容?
问题描述
我有 2 个大 .csv 文件。我想提取文件 1 中文件 2 的内容。
例如:
文件1:
A1BG 1
NAT1 9
NAT2 10
SERPINA3 12
AAMP 14
AANAT 15
AARS1 16
文件 2:
1 10422
1 10549
1 2232
1 23198
1 23352
1 284403
1 368
1 51035
1 80854
1 9923
2 10053
2 10376
2 10724
2 2026
2 2193
2 22976
2 23154
2 24138
2 2639
2 284207
2 285203
2 3337
2 3437
2 348
2 348
2 348
2 351
4 7689
输出:
1 10422
1 10549
1 2232
1 23198
1 23352
1 284403
1 368
1 51035
1 80854
1 9923
这是我的代码:
awk 'NR==FNR{FS=" ";a[$2];next}{FS=" ";if ($1 in a) print $0}' <file1.csv <file2.csv >output.csv
但我没有输出。
解决方案
让我们看看你的代码:
awk 'NR==FNR{FS=" ";a[$2];next}{FS=" ";if ($1 in a) print $0}' <file1.csv <file2.csv >output.csv
您正在重定向来自 2 个文件的输入。对于每个文件描述符,shell 只能有一个数据源:shell 处理从左到右的重定向,就像在命令行中看到的那样。尝试这个:
awk 'NR==FNR' <file1.csv <file2.csv
您可能会对 awk 认为的“第一个文件”感到惊讶。
awk 完全能够读取文件,您不需要 shell 来执行此操作:
awk 'NR==FNR' file1.csv file2.csv
推荐阅读
- css - 空样式 (.css/.scss) 文件
- reactjs - google-map-react 和 react-google-maps 之间的区别
- php - Twilio 群发短信
- regex - 在 JMeter 正则表达式提取器中使用正则表达式获取值
- android - 带有 layout_weight = 0 的 Android 布局 wrap_content 不显示
- java - XML-BEANS 编译模式:不兼容的次要版本 - 最多期望 23,得到 24
- java - How to receive customized JSON Object in Spring boot Api post Method
- python - QNetworkAccessManager QWaitCondition
- javascript - 使用指定变量复制对象
- java - 调用构造函数时的非静态变量