строки печати между запуском и концом с помощью sed

Если у Вас есть корень, Вы могли бы просто использовать tcpdump и захватите все. Можно затем потянуть его в Wireshark и проанализировать к содержанию основы.

$ sudo tcpdump -i  -w mycapture.tcpdump  

... и затем ctrl-c хита, когда у Вас было достаточно. Выполненный в a screen сессия, если необходимо отсоединиться и т.д.

По умолчанию это только получит первую часть каждого пакета, но так как Вы главным образом интересуетесь анализом источника, который должен быть прекрасным. Тонны других опций к tcpdump, если Вы чувствуете себя предприимчивыми.

Править: На самом деле, когда-то загруженный в Wireshark, можно просто использовать пункт меню Statistics | IP-адреса... и получить хорошую сводку трафика количеством/уровнем/процентом:

enter image description here

7
06.06.2013, 19:02
4 ответа
sed -n -e '/^BEGIN$/,/^END$/{/^BEGIN$/d;/^END$/d;p;}' input
12
27.01.2020, 20:15
  • 1
    я надеялся, что это не будет некоторой длинной обветренной вещью с шаблоном и содержать пробелы и действительно это не. Мне понравилось бы не должным быть повторять разделители, потому что в моем случае они намного длиннее, но это сделает.Спасибо! –  Miserable Variable 06.06.2013, 19:25
  • 2
    Это может быть сокращено к sed -n -e '/^BEGIN$/,/^END$/{//!p}' input –  potong 10.06.2013, 23:41
  • 3
    @potong, Но никто не понимает это. –  Hauke Laging 10.06.2013, 23:50
  • 4
    @potong, Ваше изменение не работает над OSX, но сообщением, которое каждый делает. –  Neo 20.10.2017, 08:18

С GNU sed 3.95 или выше, можно сделать:

sed '/^BEGIN$/,/^END$/!d;//d'

С другим seds, Вам, вероятно, придется записать это:

sed '/^BEGIN$/,/^END$/!d;//d;/^BEGIN$/d'

Или даже

sed '/^BEGIN$/,/^END$/!d;/^END$/d;/^BEGIN$/d'

как с busybox sed.

См. также sed FAQ

5
27.01.2020, 20:15
  • 1
    sed '/^BEGIN$/,/^END$/!d;//d' результаты ни в каком выводе (sed-версия 4.2.1 GNU) –  Hauke Laging 07.06.2013, 00:31
  • 2
    я только что проверил, что он работает со всеми из 3,95, 4.0, 4.0.6, 4.0.7, 4.0.8, 4.0.9, 4.1.3, 4.1.4, 4.1.5, 4.2, 4.2.1, 4.2.2. До этого (3.02.80 и прежде (1999)), это производит, "НАЧИНАЮТСЯ" точно так же, как традиционные семена Unix. –  Stéphane Chazelas 07.06.2013, 01:16
  • 3
    Извините, мой отказ. Я не заменил целую строку, но просто мою команду sed против Вашей. -n предотвращенный вывод... Я проверил файл с od (никакой CRS). Но самое очевидное... –  Hauke Laging 07.06.2013, 01:21

Если Вы не хотите повторять разделители, Вы могли бы использовать Perl:

perl -ne '/BEGIN/ && do {$a=1; next}; $a=0 if /END/; print if $a' input

Вы могли также изменить ответ HaukeLaging для использования переменных:

b="BEGIN"; e="END"; sed -n -e "/^$b$/,/^$e$/{/^$b$/d;/^$e$/d;p}" input
2
27.01.2020, 20:15

Кроме того, вы можете включить разделителиsed -ne "/BEGIN/,/END/{p;}" $INPUT

0
27.01.2020, 20:15

Теги

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