Сохранить вывод командной строки в файл без графики или специальных символов

Я хочу сохранить выходные данные командной строки в текстовом файле. Я использую macOS High Sierra 10.13.6. Проблема в том, что у него есть некоторый графический вывод, который я не хочу хранить. Мне нужны только строки и соответствующие им значения. Не могли бы вы мне помочь, пожалуйста?

Команда оболочки, которую я запускаю:

pwmetrics http://www.cnn.com --runs=1

И вывод, показанный в терминале:

введите описание изображения здесь

Этот инструмент для создания показателей производительности веб-страницы является открытым исходным кодом. Вот ошибка, которую я получаю, когда пытаюсь сохранить свой код:

Ошибка

И o.txtв файле ничего нет.

Команда оболочки, которую я пробовал до сих пор:

pwmetrics http://www.ieee.org --runs=2 &> /Users/ssr/Desktop/o.txt
pwmetrics http://www.ieee.org 2>/dev/null | tee /Users/ssr/Desktop/o.txt
pwmetrics http://www.ieee.org yes>/dev/null | tee /Users/ssr/Desktop/o.txt
Отличный вопрос. Поскольку это открытый исходный код, есть простые способы выяснить, что это escape-последовательности ANSI, и довольно много вариантов их отмены. Надеюсь, мой ответ даст вам некоторое направление или идеи, чтобы попробовать. Особенно быстрый set term dumbи повторный запуск команды один раз.

Ответы (1)

У вас есть несколько вариантов с этим инструментом.

  1. Выведите JSON и проанализируйте его
  2. Загрузите в Google Таблицы и экспортируйте нужный текст в формате CSV.
  3. Используйте инструмент для удаления escape-кодов ANSI, которые украшают (по мнению некоторых) и окрашивают текст — один пакет для удаления ANSI — https://github.com/chalk/strip-ansi .
  4. Используйте другие инструменты, чтобы удалить их, передав вывод или сохранив его в файл - https://unix.stackexchange.com/questions/4527/program-that-passes-stdin-to-stdout-with-color-codes- раздели или https://superuser.com/questions/380772/removing-ansi-color-codes-from-text-stream
  5. Попытка установить тип терминала на TERM=dumb (например, Не удается построить график с помощью gnuplot на моем Mac )
  6. разветвление этого проекта и изменение кода, чтобы escape-значения ANSI ничего не значили. (Строки 4-8 здесь https://github.com/paulirish/pwmetrics/blob/master/lib/utils/messages.ts или, возможно, несколькими строками ниже, где эти переменные используются для построения вывода)

Я также сказал бы программе записать ваш выходной файл, чтобы вы получили более четкое представление без необходимости отладки обработки файлов и конвейеров в bash (при условии, что сегодня это не ваша сила).

Большое спасибо @bmike, это было полезное объяснение!