Вы найдете пред - и пост - установка и сценарии удаления в /var/lib/dpkg/info
.
% ls -1 /var/lib/dpkg/info/hdparm.*
/var/lib/dpkg/info/hdparm.conffiles
/var/lib/dpkg/info/hdparm.list
/var/lib/dpkg/info/hdparm.md5sums
/var/lib/dpkg/info/hdparm.postinst
/var/lib/dpkg/info/hdparm.postrm
/var/lib/dpkg/info/hdparm.preinst
hdparm.postinst
(сценарий, который является, бежал за успешной установкой), тот, который звонит update-rc
.
Вы можете использовать Команда READ
Command ( Bash
Встроенная) Чтобы заставить символы можно прочитать по одному:
netcat localhost 9090 | (
cnt=0
line=
while read -N 1 c; do
line="$line$c"
if [ "$c" = "{" ]; then
cnt=$((cnt+1))
elif [ "$c" = "}" ]; then
cnt=$((cnt-1))
if [ $cnt -eq 0 ]; then
printf "%s\n" "$line"
line=
fi
fi
done
) | grep sender
Этот скрипт должен распечатать каждый полный вывод с балансировкой {
и }
, но вы можете изменить скрипт, чтобы делать все, что вы хотите. Этот скрипт не преуспел на этапе по сравнению с почти большим, но это довольно просто и, кажется, работает для меня ...
Обратите внимание, что ваш тестовый образец не имеет соответствия {
и }
, поэтому, если это случай реального ввода, вы можете изменить критерии для печати строки.
Я думаю, что проблема является отсутствием новых линий в Netcat
выход. Я вижу две обходные пути:
Вставьте новую строку каждую секунды x
(с неудачными последствиями, если новая линия вставлена в середине источника
):
(во время сна 1 ; Do Echo; Готово и Netcat ...) | Grep Source.
Использование awk
с rs, кроме ньюлайн:
netcat ... | awk -v rs = '}' -v or = '}' '/ Источник /'
Добавить - Буферизатор линии
Использование линейной буферизации на выходе:
netcat localhost 9090 | grep --line-buffered sender
В соответствии с комментарием @ user43791 , попробуйте отключить буферизацию в конвейере , например:
stdbuf -o0 netcat localhost 9090 | grep sender
В Bash вы можете использовать файлы псевдоустройства , чтобы открыть TCP-соединение и, как обычно, выполнить grep. Например:
$ grep "sender" < /dev/tcp/example.com/1234
Чтобы проверить это, просто запустите сервер, который может отправить какой-то файл, например:
$ nc -vl 1234 < /etc/hosts
Затем в другом терминале запустите тест для grep
, вывод:
$ grep "127" < /dev/tcp/localhost/1234
127.0.0.1 localhost
Ответ здесь: grep не соответствует в выводе nc
netcat выводит подробные журналы по стандарту error, поэтому нам нужно фиксировать ошибки, прежде чем мы перейдем к grep.
$ netcat -zv localhost 1-9000 2>&1 | grep succeeded