Удалить некоторые части из файла журнала

Удалить некоторые части из файла журнала

Я хочу удалить часть столбца (7-й столбец:/user1/index...), он определен пробелом. Это пример моего файла журнала

192.xx.xxx - - [07/Apr/2017:14:21:15 +0200] "POST /user1/index.php?m=xxxxx&doajax=do_ajax_request&action=xxxx HTTP/1.1" ...
192.xx.x.xx - - [07/Apr/2017:14:21:15 +0200] "GET /user2/index.php?m=xxxxx&doajax=do_ajax_request&action=xxxxx HTTP/1.1".... 

Я просто хочу удалить всех пользователей, то есть user1 и user2 тоже, потому что я просто хочу проанализировать запрос, неважно, какие пользователи. Вот так

192.xx.xxx - - [07/Apr/2017:14:21:15 +0200] "POST /index.php?m=xxxxx&doajax=do_ajax_request&action=xxxx HTTP/1.1" ...
192.xx.x.xx - - [07/Apr/2017:14:21:15 +0200] "POST /index.php?m=xxxxx&doajax=do_ajax_request&action=xxxxx HTTP/1.1".... 

Я пытался использовать эту команду только для извлечения запроса (/index.php?m=xxxx) cat /var/log/test.log| {print $7}'| awk -F/ '{print $3}', но я не знаю, как заменить этот запрос в 7-м столбце, где я могу найти свой запрос Спасибо

решение1

sed 's,POST /[^/]*/,POST /,'  logfile | awk ... 

или в скрипте awk, если вы используете разделитель полей по умолчанию (FS)

sub ("POST /[^/]*/", "POST /", $7) ; 

решение2

Вы можете попробовать следующую опцию sed.

sed -i 's:/[a-zA-Z0-9]*/:/:2' logfile

Здесь он ищет шаблон, который начинается с «/», содержит буквы алфавита и цифры (для имени пользователя) и заканчивается на «/», заменяется просто на «/» для каждой строки в файле.

Или

sed -i 's: /[a-zA-Z0-9]*/:/:2' logfile

Единственное отличие от первой команды в том, что она также занимает пробел перед первым /user* в строке.

Связанный контент