Почему grep изменяет длину выходных строк?

Я часто использую dpkg или aptitude сочетании с grep когда хочу перечислить некоторые пакеты, доступные или установленные в моей системе, но я заметил, что когда я добавляю | grep | grep , выходные линии выглядят несколько иначе.

Вот чистый вывод dpkg , первая команда была введена, когда терминал был меньше, второй – когда терминал был максимизирован:

экран

Как вы можете видеть, выход отличается в зависимости от размера окна – пространство уменьшается в случае меньшего размера.

Теперь, что происходит, когда мы добавляем | grep | grep :

экран

Часть первого выхода была сброшена во вторую строку. Но когда я максимизировал терминал и набрал команду еще раз, линия находится в одном куске. Более того, столбцы имеют одинаковый фиксированный размер (те же промежутки между ними).

Это выход производительности:

экран

Обе команды были введены в максимально развернутом окне, но строка grep имеет более узкие столбцы, а некоторый текст третьего столбца был отключен.

Почему это происходит? Есть ли способ остановить grep от изменения размеров линий?

Я не знаю, как добавить изображение без изменения его параметров, надеюсь, вы видите, о чем я говорю.

  • Dpkg - не создает папку при установке пакета deb
  • Debian - обновлять все зависимости, когда они не будут установлены »
  • Как исправить проблему с неоднозначным именем пакета libglib2.0-0?
  • Состояние DPKG повреждено
  • Каковы плюсы и минусы deb vs. rpm?
  • Установка MongoDB в контейнере Ubuntu LXC. Сбой с 'invoke-rc.d: initscript mongod, действие "start" не выполнено.'
  • перечисление пакетов в Debian, a la `dpkg -l`, но включая исходный источник / источник пакета
  • dpkg: новый сценарий предварительной установки возвратил статус выхода 1
  • One Solution collect form web for “Почему grep изменяет длину выходных строк?”

    Это не grep изменяющий выход. Это dpkg и aptitude . Они проверяют, идет ли выход на терминал или на какую-либо другую команду.

    Если это терминал, они адаптируют свою собственную ширину вывода в соответствии с размером терминала.

    Если выход не переходит к терминалу, команда не знает, какой размер столбца будет уместен. (Результат может также завершиться в каком-то файле.)

    То же самое происходит с ls . Сравнить ls и ls|cat .


    Существует нет общего способа решения этой проблемы, но некоторые команды могут иметь определенные варианты для этого. Например aptitude имеет --disable-columns и -w :

      --disable-columns This option causes aptitude search and aptitude versions to output their results without any special formatting. In particular: normally aptitude will add whitespace or truncate search results in an attempt to fit its results into vertical “columns”. With this flag, each line will be formed by replacing any format escapes in the format string with the corresponding text; column widths will be ignored. -w <width>, --width <width> Specify the display width which should be used for output from the search command (by default, the terminal width is used). 

    Страница man dpkg говорит:

      COLUMNS Sets the number of columns dpkg should use when displaying formatted text. Currently only used by -l. 
    Interesting Posts

    Как исправить unix, чтобы я мог использовать клавиши со стрелками в терминале?

    Фильтрация rsyslog на основе IP-адреса с подстановочными знаками

    Используя find -name с tar в сценарии bash, что я делаю неправильно?

    настройка tmux

    SSH: Почему моя система предлагает мой закрытый ключ при попытке аутентификации с открытым ключом?

    Как установить права root для всех пользователей?

    как правильно задержать выполнение сценария запуска на основе проверенного состояния?

    Не удалось запустить Fedora 18 LiveCD с помощью USB-устройства

    как создать модуль autoconf и как загрузить его для компиляции другой программы

    У меня есть файл, который я не могу удалить после того, как файл mv был прерван

    как проверить каталог пуст

    Как перенумеровать разделы GPT на диск с диском?

    Как получить время в формате HHMM несколько минут, следовательно, сейчас?

    Локализация файла (в данном случае dwm) и неудачных кусков

    Перезапустить конкретный туннель для racoon

    Linux и Unix - лучшая ОС в мире.