Как использовать регулярные выражения и обратные ссылки с sed? - PullRequest
0 голосов
/ 01 октября 2018

Я хочу удалить скобку из поля даты в журнале доступа Nginx.Я пытался

sed -E 's#\[(\d+)#\1#' access.log | head

Но он все еще печатает

172.31.20.98 - - [30/Sep/2018:20:01:01 +0000] "GET ...

Я изначально пытался изменить формат даты, но это не сработало.

sed -E 's#(\d+)/(\w+)/(\d+)#\3-\2-\1#' access.log

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Я использовал старый добрый Perl.

perl -pe 's#\[(\d+)/(\w+)/(\d+):(\d+):(\d+):(\d+) \+0000\]#"$3-$2-$1 $4:$5:$6"#' < access.log

172.31.20.98 - - "2018-Sep-30 20:01:01" ...
0 голосов
/ 01 октября 2018

Если вы намереваетесь удалить [ и ], вы можете сделать это в два шага с каждым из этих метасимволов, экранированных обратной косой чертой:

$ echo '172.31.20.98 - - [30/Sep/2018:20:01:01 +0000] "GET ...' | sed 's/\[//; s/\]//'
172.31.20.98 - - 30/Sep/2018:20:01:01 +0000 "GET ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...