Мне нужно сохранить результат команды grep в файл, но я также хочу, чтобы выходной файл был отформатирован и сохранял цвета, как в терминале.
Есть ли способ сделать это? Может быть, заставить grep сохранить какой-нибудь язык разметки? Если это невозможно, есть ли другой инструмент, который может выполнить эту задачу?
Я пытаюсь выделить ключевое слово поиска в выходном файле, точно так же, как в терминале.
pygmentize
работает со многими другими.В зависимости от того, что вы хотите сделать с выходным файлом, можно добавить цвета в обычный текстовый файл, потому что цвета просто берутся из некоторых специальных символов. Grep, похоже, не хочет печатать их, когда вы перенаправляете его в файл, поэтому вам нужно принудительно заставить его:
Теперь, когда вы печатаете файл на консоль, он будет напечатан с цветами, потому что Bash интерпретирует эти символы как «используйте этот цвет».
Однако, если вы откроете его в редакторе, например
vim
, вы получите несколько странных символов. Например, когда я использую командыВывод выглядит правильно, когда я его печатаю,
cat
но когда я открываю его,vim
я получаюТак что, если вы хотите использовать редактор, это, вероятно, не то, что вы хотите.
источник
Если я правильно понял, вы хотите сохранить вывод терминала в текстовом файле, верно? Но вы хотите, чтобы он был отформатирован с цветами. Если это так, вот мои идеи:
Подсветка вывода автоматически
Как вы, вероятно, знаете, если вы записываете вывод grep в текстовый файл, именно потому, что это текстовый файл, его невозможно отформатировать. Итак, насколько я знаю, вы не можете сделать это простым способом.
Несмотря на это, существует простой обходной путь, заключающийся в том, чтобы заставить ваш текстовый редактор понять, какой тип файла открывается. Например, предположим, что ваш вывод grep имеет некоторые компоненты bash, поэтому подсветка bash работает для вас (кстати, это часто те цвета, которые вы видите в цветном выводе в терминале). Таким образом, хитрость заключается в том, чтобы сохранить вывод текста в файл с соответствующим расширением. Вместо того, чтобы делать что-то вроде:
вы можете пойти на
Что заставит gedit (или любой приличный текстовый редактор) автоматически распознать, что вы говорите о bash-коде, и выделит его соответствующим образом. Вам не нужно окрашивать вывод, программа сделает это за вас, если распознает тип открываемого кода. Если вы работаете с другими типами форматов, просто лучше адаптируйте расширение к тому, что вы настраиваете для того, что вы делаете (например,> output.xml,> output.html,> output.py ... и т. Д.). Удачи! :)
Выделение некоторых слов в выходном файле
Итак, если я понял, вы хотите выделить слова, которые вы искали. Опять же, это не может быть сделано в текстовом файле только потому, что это простой текст. Однако вы можете добавить какой-либо формат к нему очень простым способом, например с использованием некоторого HTML-кодирования. Это преобразует ваш вывод в html-код, и когда вы откроете его с помощью программы, способной интерпретировать html (libreoffice writer, firefox и 10000 и т. Д.), Вы увидите выделенные слова.
Для этого допустим, что это ваш grep, экспортированный в html:
И теперь вы хотите выделить ключевой текст в вашем выводе. Вы можете использовать sed, чтобы сделать это, например:
И вот, теперь ваш ключевой текст выделен красным.
источник