Можно использовать tcpdump
.
# tcpdump filter for HTTP GET
sudo tcpdump -s 0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
# tcpdump filter for HTTP POST
sudo tcpdump -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'
Для использования решения tshark
см.:
https://serverfault.com/questions/84750/monitoring-http-traffic-using-tcpdump
Использовать -r
опция для расширенного regexp синтаксиса:
sed -r -e 's/foo|bar/narf/g'
Иначе выйдите из разъединения как \|
:
sed -e 's/foo\|bar/narf/g'
Существует много вариаций на синтаксис регулярного выражения. Самые первые инструменты в мире Unix, который имел регулярные выражения, не имели полных возможностей регулярных выражений, только наборы символов ([…]
и .
), повторение (*
) и привязки к строке (^
и $
). Основные регулярные выражения только имеют эти операторы. Sed является олдскульным инструментом и использует основной regexps.
Много sed реализаций имеют расширения для полного соответствия regexp. Поскольку символ |
обозначает себя, необходимо использовать \|
для чередования, и так же \(
и \)
для группировки. Обратите внимание, что стандарт POSIX не передает под мандат это \|
поддерживайтесь в основных регулярных выражениях, и некоторые системы (например, OpenBSD) не имеют его.
Некоторые версии sed имеют опцию переключиться на расширенные регулярные выражения, где (…)
используется для группировки и |
для чередования. С GNU sed (т.е. в соответствии с Linux или Cygwin) или Busybox, передайте -r
опция. На FreeBSD или OSX, передайте -E
опция.
Если Ваш sed не имеет чередования, можно звонить awk
вместо этого. Это получает мандат POSIX, но немного подробный для этой задачи, и это не поддерживает обратные ссылки.
awk '{gsub(/foo|bar/, "narf")}' <fileName.old >fileName.new
Между прочим, только GNU и замена файла поддержки Busybox sed на месте. Awk и другие версии sed не делают. Посмотрите, что я могу заставить 'сокращение' изменить файл на месте?
Если у Вас есть Perl, это часто удобно в one-tool-does-all способе для острот обработки текста. Большая часть того, что легко в sed, awk и остальное не намного более трудно в Perl, и можно сойти с рук изучение сингла (если сложный) инструмент.
perl -i -pe 's/foo|bar/narf/g' fileName
Вы можете использовать Vim в режиме Ex:
ex -sc '%s/\vPA|QU/RO/g|x' file
%
выберите все строки
s
замените
\ v
включить магию
g
глобальная замена
x
сохранить и закрыть