我有两个csv文件,文件1有10列数据,其中第3列是url,文件1的第5、6、7、9列是第三列url对应的状态值,文件2有15列数据,第5列是url,文件2第10、11、12列是第五列url对应的状态,用url匹配两个文件,怎么使用awk命令匹配url,保留相应的数据整理生成新的csv文件并且保留相应的表
时间: 2023-06-26 07:06:55 浏览: 81
用awk数组处理两个文件
假设文件1为`file1.csv`,文件2为`file2.csv`,可以使用以下命令来匹配url并整理生成新的csv文件:
```
awk -F',' 'FNR==NR {urls[$3]=$5","$6","$7","$9; next} $5 in urls {print $0","urls[$5]}' file1.csv file2.csv > output.csv
```
解释如下:
- `-F','`:指定分隔符为逗号
- `FNR==NR {urls[$3]=$5","$6","$7","$9; next}`:读取第一个文件`file1.csv`,将第3列的url作为键,第5、6、7、9列的状态值作为值存入`urls`数组中
- `$5 in urls {print $0","urls[$5]}`:读取第二个文件`file2.csv`,如果第5列的url在`urls`数组中存在,则将整行数据和对应的状态值一起输出
- `> output.csv`:将输出结果重定向到`output.csv`文件中
输出文件`output.csv`包含15列数据,前5列来自`file2.csv`,后10列来自`file1.csv`。
阅读全文