Extraiga la columna 1 de ambos archivos, ordénela y luego encuentre las líneas duplicadas:
cut -d" " -f1 File1.txt File2.txt | sort | uniq -d
Вы можете использовать csvsql
из csvkit .
csvsql -S --query '
select
"Id",
sid,
max(case when name="f1" then value else null end) as f1,
max(case when name="f2" then value else null end) as f2,
max(case when name="f3" then value else null end) as f3
from file
group by "Id",sid
' file
" sid"
с начальным пробелом, поэтому нам нужно-S
(пропустить начальные пробелы)---или использовать " sid"
в запросе. max()
, чтобы определить, какое значение использовать, если необходимо найти несколько одинаковых пар Id/sid. Вы можете использовать avg()
или min()
или около того (См. комментарий @FedonKadifeli для примера ). Выход:
Id,sid,f1,f2,f3
20,2,245,345,
20,3,,,445
Использование Миллера(https://github.com/johnkerl/miller)
mlr --csv reshape -s name,value then unsparsify input.csv
у вас будет
Id, sid,f1,f2,f3
20,2,245,345,
20,3,,,445