Объединить два файла с поиском по ключу и добавить в конце

como @don _crissti sugirió y como se describe en Guardar atajos de teclado personalizados en Gnome Pude exportar/importar configuraciones de gpaste con:

dconf dump /org/gnome/GPaste/ > gpaste.dconf.settings
dconf load /org/gnome/GPaste/ < gpaste.dconf.settings

1
20.07.2019, 14:07
2 ответа

Этот sedтолько преобразует ваш ввод в заданный вывод. Вы можете расширить его для своих нужд:

sed -E '/^[0-9]/{s/.*_(.*)(,.*),(.*)/\3\2,\1/;H;d;};G;s/,(.*)\n.*\n\1(,[0-9]*,T[0-9]*).*/\1\2/' file2 file1

Идея для такой задачи всегда одна и та же. :Сначала прочитайте второй файл, чтобы создать таблицу поиска в области хранения, а затем добавьте эту таблицу поиска к каждой строке основного файла.

Подробно:

  • шаблон /^[0-9]/обращается к строкам, начинающимся с цифры, поэтому все внутри {}выполняется только для file2
  • s/.*_(.*)(,.*),(.*)/\3\2,\1/извлекает из второго файла только нужные нам части, уже в нужном порядке
  • H;dдобавляет это в таблицу поиска в области хранения и отбрасывает эту строку. Другая обработка предназначена только для file1
  • Gдобавляет таблицу поиска, а s/,(.*)\n.*\n\1(,[0-9]*,T[0-9]*).*/\1\2/находит ключ (между ,и новой строкой )в качестве обратной ссылки \1в таблице поиска, чтобы добавить поля из таблицы
0
28.01.2020, 00:06

Также нашел другой способ решить эту проблему с помощью AWK, и он у меня работает.

awk -F"," 'FNR==NR{a[$4]=$3 FS $2;next}{ print $0","a[$3]}' file1 file2
0
28.01.2020, 00:06

Теги

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