awk -v 'OFS=\t' 'NF == 2 { print $1, "none", $2; next } 1' input.txt > output.txt
Корректируйтесь в зависимости от характеристик Вашего входного файла. Я предполагаю, что каждая строка только с 2 полями не должна иметь вставленного "ни одного". Иначе через все другие строки просто проходят неизменные (цель 1
в конце).
На Debian, Ubuntu, Монетном дворе и другом использовании дистрибутивов Dpkg и APT для управления пакетами:
dpkg -S /path/to/file
ищет установленный пакет, содержащий указанный файл, например.
dpkg -S /usr/bin/tree
dpkg -S $(which tree)
apt-file search /path/to/file
ищет пакет в распределении, содержащем указанный файл, например.
apt-file search /usr/bin/tree
Несколько команд встроены, т.е. испеченные в Вашу оболочку. Их исходный код является частью оболочки. Использовать type
найти, встроена ли команда.
$ type cd
cd is a shell builtin
$ type tree
tree is /usr/bin/tree
Команда tree
находится в названном пакете tree
. Можно загрузить и распаковать исходный код для этого пакета с
apt-get source tree
dpkg-source -x tree_*.dsc
В этом случае изменение исходного кода не является самым легким путем. Это может быть стоящее осуществление, если Вы хотите сделать некоторое программирование C. Для достижения цели, с помощью высокоуровневого языка, такого как Perl, Python или Ruby будут меньшим количеством работы.
Нет, команды Linux не 'испеклись' в. Большое количество является частью GNU coreutils, но каждый - все еще отдельная программа в этом пакете и может в конечном счете быть скомпилирован самостоятельно.
Конечно, tree
команда - ничто, чтобы сделать с GNU, его страница проекта может быть найдена здесь - http://mama.indstate.edu/users/ice/tree/. Исходный код доступен загрузке и содержит инструкции по сборке (я предполагаю, что Вы уже знакомы с make
и gcc
). Исходный пакет также будет доступен для Вашего дистрибутива и может включать дополнения/патчи, не доступные в восходящей версии (но также и может быть более старая версия). Ваш дистрибутив будет иметь инструкции относительно того, как скомпилировать это. В большинстве случаев, если Вы захотите кодировать на пакете, то восходящий источник будет лучшим для движения со все же.
Рассмотрение журнала изменений для tree
хотя, я вижу, что вывод XML был добавлен в версии 1.6.0 (-X
опция), и HTML всегда был доступен. Существует много программ, уже доступных для преобразования между различными языками разметки. xml2yaml
определенный, который дал бы Вам yaml
. Также pandoc
самый всесторонний, о котором я знаю и имею поддержку пользовательских форматов (хотя создавая, каждый - задача программирования сам по себе).
Если Вы все еще хотите идти вперед и попробовать, разрабатывают эти функции непосредственно tree
хотя, я рекомендовал бы связаться с разработчиком и спросить, хотели ли бы они включить их. Если им интересно, и можно обеспечить патчи, которые имеют достаточно высокое качество, вероятно, что они были бы в конечном счете включены в реальную программу. Из того, что уже находится в программе, довольно вероятно, что он интересовался бы добавлением yaml
или json
вывод (с другой стороны, хотя, он может чувствовать, что программа уже имеет достаточно чрезмерного увеличения размера функции).
Пользовательский формат кажется более опрометчивым мне, хотя, поскольку он походит на большое обязательство для такого в других отношениях простого инструмента, если нет очень простой способ реализовать его. Вам могло понравиться с библиотеками большего проекта как pandoc для преобразований, но снова это опрометчиво для основного инструмента.
deb-src
записи вsources.list
, какие AFAIK комментируются по умолчанию на Ubuntu. Кроме того,apt-cache show
даст поле домашней страницы для большинства пакетов, это - по крайней мере, хорошая идея проверить это на более новое неупакованной версией программного обеспечения перед любой попыткой изменить исходный код. – Graeme 27.01.2014, 19:14