Распечатать определенный диапазон строк между двумя совпадениями, начиная с определенной строки после первого совпадения

NETSTAT в настоящее время считается устаревшим, а другие программы, включенные в net-tools, такие как arp, ifconfig, iptunnel, nameif, netstat и route.

Функциональные возможности, предоставляемые некоторыми из этих утилит, были воспроизведены и улучшены в новом пакете iproute2 , в основном за счет использования его новой команды ip .

Примеры устаревших команд и их замен:

arp => ip n (ip neighbour)

ifconfig => ip a (ip addr), ip link, ip -s (ip -stats)

iptunnel => IP-туннель

iwconfig => iw

nameif => IP-ссылка, ifrename

netstat => ss, IP-маршрут (для netstat-r), ip -s link (для netstat - i), ip maddr (для netstat-g)

Команда netstat читает различные файлы / proc для сбора информации. Однако этот подход неэффективен, когда нужно отобразить много подключений. Это замедляет работу. Команда ss получает информацию непосредственно из пространства ядра. Параметры, используемые с командами ss , очень похожи на netstat, поэтому их можно легко заменить.

Статистика, предоставленная ss , является поверхностной , но считается лучшей альтернативой netstat

Примеры:

получить все соединения : ss | less

ss -t получить соединения TCP не в режиме прослушивания (серверные программы)

ss -u получить соединения UDP не в режиме прослушивания

ss -x получить канал сокета unix соединения

ss -ta получить все соединения TCP

ss -au получить все соединения udp

ss -nt все TCP без имени хоста

ss -ltn прослушивание tcp без разрешения хоста

ss -ltp прослушивание tcp с PID и именем

ss -s выводит статистику

ss -tn -o TCP-соединение с хостом домена и показывает keepalive таймер

ss -tl4 ip4 соединения

0
28.09.2018, 14:06
4 ответа

если вы ищете с помощью grep, вы можете сделать это:

  • grep -A 5 "string used to search" <path-to-file(s)>покажет 5 строк после совпадающей строки
  • grep -B 5 "string used to search" <path-to-file(s)>покажет 5 строк перед совпавшей строкой
  • grep -C 5 "string used to search" <path-to-file(s)>покажет 5 строк после и до совпадающей строки (C означает контекст)

для вашего примера это будет :grep -A 2 -B 1 "rdb" <path-to-file(s)>

0
28.01.2020, 02:14

Попробуйте это,

awk '/^Linux$/{flag=1;next}/^Unix$/{flag=0}flag' file | tail -n +7

Или безtail:

awk '/^Linux$/{flag=1;n=NR;next}/^Unix$/{flag=0};flag&&NR>(n+6);' file

Пояснение:

  • Найдите шаблон ^Linux$и, если он найден, установите для flagзначение 1 (true )и перейдите непосредственно к строке next.
  • Продолжайте, пока шаблон ^Unix$не будет найден, и установите flagна 0 (false)
  • flagв конце — это обозначение, специфичное для awk. Если flagверно, выведите строку, иначе ничего не делайте.
  • flag— это просто имя переменной и может быть любым, например. fили printthisline.

Использование Gnused:

sed '/^Linux$/,/^Unix$/{//!b};d' file | tail -n +7
1
28.01.2020, 02:14

Я бы написал один из

sed -n '/Linux/,/Unix/p' file | sed '1,7d;$d'
# or
awk '/Linux/ {nr = NR} /Unix/ {exit} nr && NR > nr+6' file
2
28.01.2020, 02:14

Всякий раз, когда вы видите относительную адресацию, вы должны использовать ed.

echo '/Linux/+7,/Unix/-1p' | ed -s input_file.txt -

Или, как здесьдок:

ed -s input_file.txt - <<\EOF
/Linux/+7,/Unix/-1p
EOF
4
28.01.2020, 02:14

Теги

Похожие вопросы