обработка текстовых файлов в bash - PullRequest
1 голос
/ 14 февраля 2020

поэтому у меня есть этот файл, который содержит некоторые данные. что я использую для создания графа, используя graphviz. проблема в том, что мне нужно открыть файл и поставить фигурные скобки в конце и начале файла. Я также пишу орграф перед открывающими скобками.

, чем запускаю сценарий для создания графика.

cat data.txt | dot -Tpng > image.png

Проблема в том, что я хотел бы автоматизировать первый шаг и добавить digraph { в начале и } в конце с моим скриптом, который создает график.

Ответы [ 4 ]

2 голосов
/ 14 февраля 2020

Вы можете выполнять свои команды, используя список {…}:

{ echo 'digraph {'; cat data.txt; echo '}'; } | dot -Tpng > image.png
1 голос
/ 14 февраля 2020

Использование sed:

printf 'digraph {\n}\n' | sed '1r data.txt' | dot -Tpng > image.png

Вместо добавления текста вокруг содержимого файлов, вы вставляете содержимое файлов в оболочку.

0 голосов
/ 14 февраля 2020

Вы можете просто передать свои данные в echo, загрузив data.text через `` s. В современной оболочке вы также можете использовать конструкцию $ ().

Один эхо-процесс, один процесс cat, один процесс с точкой:

echo digraph {`cat data.text`} | dot -Tpng > image.png
0 голосов
/ 14 февраля 2020

Попробуйте Awk.

awk 'BEGIN { print "digraph (" }
    1
    END { print ")" }' data.txt |
dot -Tpng > image.png

1 - это простое сокращение Awk для { print }. cat не было строго необходимо,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...