我有一个csv文件,它有列式数据,比如
EvtsUpdated,IR23488670,15920221,ESTIMATED
EvtsUpdated,IR23488676,11014018,ESTIMATED
EvtsUpdated,IR23488700,7273867,ESTIMATED
EvtsUpdated,IR23488670,7273807,ESTIMATED
EvtsUpdated,IR23488670,9738420,ESTIMATED
EvtsUpdated,IR23488670,7273845,ESTIMATED
EvtsUpdated,IR23488676,12149463,ESTIMATED
我只是想找出所有重复行而忽略一列,即第3列。输出应该像
cut --complement -f 3 -d, filename into another file,
我尝试使用
首先在另一个文件中删除除3之外的其他列UPDATE orders o SET o.name =
IFNULL((SELECT CONCAT(u.first_name, ' ', u.last_name) AS full_name
FROM users u
WHERE u.user_id = o.user_id
AND u.first_name IS NOT NULL
AND u.first_name <> ''), 'NONE');
然后我尝试使用awk命令,例如awk -F,&#39; {if(FNR == NR){print}}&#39; secondfile
由于我不完全了解awk,所以我无法做到这一点
答案 0 :(得分:0)
您可以使用awk数组存储每组列的计数以识别重复项。
awk -F "," '{row[$1$2$4]++ ; rec[$0","NR] = $1$2$4 }
END{ for ( key in rec ) { if (row[rec[key]] > 1) { print key } } }' filename | sort -t',' -k5 | cut -f1-4 -d','
需要额外的sort
来维持输出中预期的原始排序。
注意:在显示的输出中,IR23488700
行被视为重复,即使它不是。
答案 1 :(得分:0)
我通过首先切割可能不同的第3列然后运行awk '++A[$0]==2' file
命令来做同样的事情。谢谢你的帮助