Библиотека сайта rus-linux.net
Изучаем команды Linux: paste
Оригинал: Learning Linux commands: pasteАвтор: Rares Aioanei
Дата публикации: 1 марта 2012 года
Перевод: А. Кривошей
Дата публикации перевода: 11 ноября 2012 г.
1. Введение
paste - одна из наименее известных команд в GNU/Linux (или других Unix-системах), но люди, занимающиеся написанием скриптов оболочки для синтаксического анализа текста, знают о ней и могут подтвердить ее полезность. Это очень простая команда, всего с двумя опциями, использующаяся для вывода бок о бок строк из двух и более файлов. В связи с простотой команды на этот раз не будет таблицы с примерами использования.
2. Использование paste
Представьте, что у вас есть конфигурационный файл, например .cvsrc, а также более поздняя версия этого файла, скажем .cvsrc.new. Для того, чтобы решить, нужно ли заменять старый файл новым, необходимо наглядно отобразить различия между ними. Под рукой всегда есть команда diff(1), но вы просто хотите просмотреть строки бок о бок, без дополнительных примечаний. По умолчанию paste использует в качестве разделителя TAB, поэтому строки из первого файла (.cvsrc) будут отделены от строк из второго файла (.cvsrc.new). Пример:
$ echo .cvsrc > .cvsrc $ echo .cvsrc.new > .cvsrc.new $ cat .cvsrc .cvsrc.new .cvsrc .cvsrc.new $ paste .cvsrc .cvsrc.new .cvsrc .cvsrc.new
В случае если вам необходимо изменить разделитель, используйте опцию -d и задайте разделитель вручную. В примере ниже мы использовали в качестве разделителя ":":
$ paste .cvsrc .cvsrc.new .cvsrc .cvsrc.new $ paste -d : .cvsrc .cvsrc.new .cvsrc:.cvsrc.new
Если вы хотите пронумеровать строки, используйте nl(1)
$ paste -d : .cvsrc .cvsrc.new | nl 1 .cvsrc:.cvsrc.new
Если же вам нужны продвинутые возможности по программированию, можно использовать, например, awk. Одним из примеров области применения paste может быть работа с конфигурационными файлами, если менеджер пакетов устанавливает их новые версии одновременно с исполняемыми файлами. Но теперь, когда мы изучили основы, можно приступить к опциям paste.
2.1. Опции paste
Если не указано имя файла или вместо него стоит '-', используется stdin.