В этой задаче вы можете обнаружить, что формат других _vhosts _access.log богаче, чем вам нужно. Я рекомендую вам выбрать несколько ваших любимых столбцов, например. awk '{print $2, $8}' other_vhosts_access.log > small.log
, а затем манипулировать small.log, который вам удобнее просматривать на глаз.
Проблема объясняется наhttps://httpd.apache.org/docs/2.4/logs.html:
... commonly used format string is called the Combined Log Format. It can be used as follows. LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
Похоже, это то, что вы используете. Вы процитировали example.com
в своем (очищенном )журнале, указав, что такой сайт, как example.com, имел HREF на ваш сайт, а браузер включил в свой заголовок «Referer :www.example.com». ПОЛУЧИТЬ запрос.
Весьма вероятно, что /page1 имеет HREF на /page2. Некоторые браузеры отправляют заголовок реферера страницы 1 при запросах страницы 2. Вы можете полагаться на это, и grep для «page2. *стр.1'. Или вы можете полагаться на исходный IP-адрес, как в принятом ответе. В этом случае вы, вероятно, захотите удалить другие отвлекающие столбцы, которые могут привести к ложным совпадениям, и использовать для анализа упрощенный файл small.log.
Строка в одинарных кавычках никогда не может содержать одинарных кавычек.
Решением этой головоломки в вашем случае будет замена каждого внутреннего '
в скрипте в -строке sh -c
на'\''
(или'"'"'
).
Это
'
в '\''
завершает строку в одинарных кавычках ), '
(the \'
в '\''
, который вы могли бы также написать как "'"
, но это слишком много кавычек и делает его нечитаемым ), и тогда '
в '\''
начинает новую строку в одинарных кавычках ). Тогда команда sh -c
будет выглядеть как
sh -c '
ffmpeg -i "$1" -c:a "$2" -c:v "$3" \
-vf "subtitles=$1.$4:'\''force_style=fontsize=$5,fontname=$6'\''" \
"$1.$7" -hide_banner'...arguments as before...