【发布时间】:2019-06-11 12:32:34
【问题描述】:
我有 2 个文件 file1.csv 和 file2.csv
file1.csv 仅包含 1 列数百行。
aaa
ddd
fff
ggg
file2.csv 包含 5 个字段,数千行。
aaa,2,3,4,
aaa,2,3,4,
bbb,2,3,4,
ccc,2,3,4,
ccc,2,3,4,
ddd,2,3,4,
ddd,2,3,4,
ddd,2,3,4,
eee,2,3,4,
fff,2,3,4,
ggg,2,3,4,
hhh,2,3,4,
hhh,2,3,4,
我的任务是检查 file1.csv 中的 col1 是否与 fil2.csv 中的 col1 匹配,然后将 file2.csv 中的第 5 列更改为 Y
期望的输出
aaa,2,3,4,Y
aaa,2,3,4,Y
bbb,2,3,4,
ccc,2,3,4,
ccc,2,3,4,
ddd,2,3,4,Y
ddd,2,3,4,Y
ddd,2,3,4,Y
eee,2,3,4,
fff,2,3,4,Y
ggg,2,3,4,Y
hhh,2,3,4,
hhh,2,3,4,
我尝试的是
for i in $(cat file1.csv); do awk -F "," '$1==$i{$5="Y"}1' OFS="," file2.csv ; done
但我只得到匹配的记录,而不是不匹配的记录。
有没有更好的方法可以在 UNIX 中使用 awk、sed 或其他常用实用程序来实现。
编辑: 用清晰的例子更新问题
【问题讨论】: