Altere seu padrão correspondente para não capturar espaços em branco antes de listar da seguinte maneira:
/^\s*Listen/
Isso incluirá todos
Listen ..
Listen ...
e outros.
Eu quero substituir a porta de escuta padrão do httpd para 9090. Eu posso editar a linha no arquivo httpd.conf usando abaixo
sed -i "/^Listen/c\Listen 9090" /etc/httpd/conf/httpd.conf
Mas a linha
Listen 80
pode ter espaço em branco antes disso.
Como eu ignoro esse espaço em branco para corresponder a essa linha?
Apenas permita que a expressão regular corresponda também ao espaço em branco. Você pode usar o grupo de caracteres [ \t] (que corresponde aos caracteres de espaço ou tabulação) ou a expressão de colchete POSIX equivalente [:blank:] .
Portanto, /^Listen/ se torna /^[[:blank:]]*Listen/ . (Observe que a expressão de colchetes é efetivamente escrita com um par de colchetes duplos.)
Tags sed linux regular-expression