Отредактировать дерево для вывода в пользовательском формате?

awk -v 'OFS=\t' 'NF == 2 { print $1, "none", $2; next } 1' input.txt > output.txt

Корректируйтесь в зависимости от характеристик Вашего входного файла. Я предполагаю, что каждая строка только с 2 полями не должна иметь вставленного "ни одного". Иначе через все другие строки просто проходят неизменные (цель 1 в конце).

3
13.04.2017, 15:36
2 ответа

На 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 будут меньшим количеством работы.

1
27.01.2020, 21:23
  • 1
    я нашел жемчуг и рубиновые решения. Я могу попробовать все три в конце –  Pureferret 27.01.2014, 09:44
  • 2
    загрузить исходные пакеты в системах APT зависит от наличия соответствующего deb-src записи в sources.list, какие AFAIK комментируются по умолчанию на Ubuntu. Кроме того, apt-cache show даст поле домашней страницы для большинства пакетов, это - по крайней мере, хорошая идея проверить это на более новое неупакованной версией программного обеспечения перед любой попыткой изменить исходный код. –  Graeme 27.01.2014, 19:14

Нет, команды 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 для преобразований, но снова это опрометчиво для основного инструмента.

2
27.01.2020, 21:23

Теги

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