Uma maneira desajeitada de fazer os dois parâmetros de uma vez é
sed -i 's/^(\w*[td]_max_\w*size\s*=\s*).M/00M/' filename(s)
Primeiro de tudo, de acordo com esta Lista de diretivas do arquivo php.ini ,
existem apenas três palavras-chave que contêm _max_
e terminam com size
:
-
imlib2.font_cache_max_size
-
post_max_size
-
upload_max_filesize
Observe que a carta imediatamente antes do _max_
é diferente em cada caso:
-
imlib2.font_cache_max_size
→e
-
post_max_size
→t
-
upload_max_filesize
→d
então, pesquisando por [td]_max_
, podemos eliminar o primeiro.
O comando em detalhes:
-
^
, claro, restringe a expressão regular para corresponder ocorrências no início da linha. Se você quiser combinar strings que não estão no começo da linha, remova o^
. Nota: a menos que você adicione algo para especificar o contrário, isso fará com que o comando altere as linhas comentadas, o que pode ser confuso. -
\(…\)
identifica um grupo de caracteres. Nós vamos usá-lo para combinar tudo até (mas não incluindo) o valor do parâmetro (ou seja, o número após o=
). -
\w*[td]_max_\w*size
corresponde- qualquer número de caracteres "palavra" (alfanuméricos),
- a
t
oud
, -
_max_
, - qualquer número (possivelmente zero) de caracteres de palavras e
-
size
.
-
\s*=\s*
corresponde a qualquer número de caracteres de espaço (espaço ou tabulação regular) um=
e qualquer número de caracteres de espaço novamente. (Você não precisa dizer\=
.)Este é o final do grupo, marcado por
\)
. - Como você sabe,
.M
corresponde a qualquer caractere seguido porM
. (Você já está usando isso.) -
00M
parece confuso, mas é apenas-
, que substitui os caracteres no grupo
\(…\)
por si, - seguido por
200M
, que é o que você deseja substituir onM
number com.
-
Você não precisa do g
a menos que você espere combinar várias strings na mesma linha
(o que é impossível se você ancorar a expressão regular
para o início da linha com ^
).
Substitua filename(s)
por seu /etc/php/*/fpm/php.ini
glob,
ou qualquer outro nome de arquivo ou lista de nomes de arquivos.
Antes de fazer o acima, você deve executar
sed -n 's/^(\w*[td]_max_\w*size\s*=\s*).M/00M/p' filename(s)que mostrará o que o primeiro comando fará.