Как настроить ширину столбца в выводе команды Linux

Когда я использовал эту команду в Red Hat Linux

/usr/sbin/ss -i 

Я получаю следующий результат ниже:

 State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 <IP_ADD:PORT> <IP_ADD:PORT> ts sack wscale:2,2 rto:204 rtt:4.5/6.5 ato:40 cwnd:3 ESTAB 0 0 <IP_ADD:PORT> <IP_ADD:PORT> ts sack wscale:2,2 rto:213 rtt:13.875/18.5 ato:40 ESTAB 0 0 <IP_ADD:PORT> <IP_ADD:PORT> ts sack wscale:2,2 rto:201 rtt:1.875/0.75 ato:40 ESTAB 0 0 <IP_ADD:PORT> <IP_ADD:PORT> ts sack wscale:9,2 rto:201 rtt:1.875/0.75 ato:40 

Всякий раз, когда я пытаюсь подключить grep к этой команде ex :

 /usr/sbin/ss -i | grep <SOME_IP_ADD> 

У меня этот вывод

 ESTAB 0 0 <IP_ADD:PORT> <IP_ADD:PORT> ESTAB 0 0 <IP_ADD:PORT> <IP_ADD:PORT> ESTAB 0 0 <IP_ADD:PORT> <IP_ADD:PORT> 

Обратите внимание, что grep не включил это:

 ts sack wscale:2,2 rto:204 rtt:4.5/6.5 ato:40 cwnd:3 

потому что это на другой линии. Итак, как мне настроить ширину столбца всякий раз, когда я использую эту команду или другие команды Linux, если на то пошло. Так что вывод не будет переносом слов или перейти к следующей строке? Их лучшие способы сделать это?

2 Solutions collect form web for “Как настроить ширину столбца в выводе команды Linux”

Если ваш grep имеет его, попробуйте параметр -A1 .

Похоже, что это не случай обертывания, но запись находится в отдельной строке.

 /usr/sbin/ss -i | grep -A1 <SOME_IP_ADD> 

Посмотрите на Context Line Control в man grep .

Альтернативой будет использование

 -P Perl-regex -z suppress-newline -o print only matching 

как в:

 ss -i | grep -Pzo '.*IPADDRESS.*\n.*' 

Тогда вы не получите окружающие штрихи, которые дает контекст.


Альтернативой может быть sed:

 sed -n '/IPADDRESS/{N;p}' # Or joining the two lines by: ss -i | sed -n '/IPADDRESS/N;s/\n/ /p' 

AWK:

 awk '/IPADDRESS/{print; getline; print}' # Or as joined lines: awk '/IPADDRESS/{printf "%s ", $0; getline; print}' 

Линия ts sack ... ESTAB ... находится ниже ESTAB ... потому что именно так ss всегда форматирует этот тип информации. Это не обводка. Вы можете включить обе строки в grep , используя флаг -A1 :

 ss -i | grep <IP ADDRESS> -A1 

Вы можете комбинировать каждое соответствие с одной строкой, передавая его через команду sed :

 ss -i | grep <IP ADDRESS> -A1 | sed '/^--$/d;N;s/\n/ /g' 
  • Сравните два файла и напечатайте только первое слово строк, которые не совпадают со строкой
  • Как открыть grep (1p) manpage?
  • Создание строк слов с разделителями пространства из вырезанного выражения
  • grepping для нескольких элементов
  • Использование \ $ в конце имени переменной передается grep
  • Как использовать тройник для перенаправления на grep
  • Как сопоставить конкретную форму необязательной последовательности из краткого руководства, включая варианты?
  • Grep, которые содержат «1111-11-11» или «2382-21-20». (Любые номера)
  • В чем смысл (^ |) ABC (| $) как расширенного REGEX?
  • Шаблон соответствия \\\ ", используя grep
  • код выхода grep в ловушке, где скрипт запускается при помощи функции upstart
  • Linux и Unix - лучшая ОС в мире.