Объединить таблицу без заголовка

sed -i -e '/Leonardo/ s/$/ Narnie/' database_readers.txt

Здесь используется параметр редактирования на месте sed ( -i ), чтобы найти все строки, соответствующие регулярному выражению Леонардо , и заменить привязку конца строки ( $ ) одним пробелом и словом Narnie . Это фактически добавляет Нарни в конец совпадающих строк.

Будьте осторожны с шаблоном поиска по регулярному выражению - легко найти больше строк, чем вы ожидали. Сначала проверьте:

sed -n -e '/Leonardo/ s/$/ Narnie/p' database_readers.txt

Параметр -n в сочетании с p в конце s /// делает sed распечатайте ТОЛЬКО те строки, которые были изменены. НЕ используйте это с sed -i , если вы не хотите удалить ВСЕ неизмененные строки из вашего файла.

В любом случае, если это распечатает больше строк, чем вы ожидали, измените Леонардо на Леонардо Да Винчи или ^ 753 [[: space:]] \ + (предполагая, что число в начале строки является уникальным идентификатором), и попробуйте еще раз, пока не изменится только строка (строки), которые вы ожидали.

Для чего-то более сложного, вы можете изучить использование sqlite (или даже mysql или postgresql ) вместо простого текстового файла. Или используйте такой язык, как perl , который имеет множество библиотечных модулей для управления базами данных с плоскими файлами.

3
04.08.2015, 01:48
0 ответов

Теги

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