Преобразование строк в столбцы в сценарии оболочки bash

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
1
07.06.2019, 15:51
2 ответа

Вы можете использовать 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
1
27.01.2020, 23:41

Использование Миллера(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
1
27.01.2020, 23:41

Теги

Похожие вопросы