Как настроить ширину столбца в выводе команды 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, как я могу сопоставить шаблон и инвертировать совпадение с другим шаблоном?
  • выражение поиска grep и файл переименования
  • Как найти пробел в тексте. используя grep?
  • Поиск шаблона регулярного выражения для чередующегося символьного случая
  • Использование регулярного выражения для извлечения содержимого файла
  • Строки, заключенные в '', игнорируются при использовании grep
  • Что означает \ bi \ b в виде grep?
  • Как grep + показать только 7 последних измененных файлов?
  • Извлечь абзац, разделенный на *** с помощью AWK
  • grep'ping файлы для нескольких строк (не в одной строке)
  • Предложение xargs grep
  • Linux и Unix - лучшая ОС в мире.