grep include /etc/nginx/nginx.conf
saída:
include /etc/nginx/modules-enabled/*.conf;
include mime.types;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
saída desejada:
include /etc/nginx/modules-enabled/*.conf;
include mime.types;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
Faria isso.
Ao atribuir algo a
$1
, isso forçaawk
a reconstrução do registro juntando os campos (que por padrão são separados por espaços em branco (pelo menos espaço e tabulação, possivelmente outros dependendo da localidade e implementação do awk)) comOFS
(espaço por padrão).Um
sed
equivalente:[[:space:]]
inclui[[:blank:]]
que inclui pelo menos espaço e tabulação;[[:space:]]
também inclui caracteres de espaçamento vertical¹, o que é potencialmente útil aqui se o arquivo tiver finais de linha MSDOS CRLF, pois removeria aqueles CRs espúrios no final das linhas.¹ como tabulação vertical, feed de formulário que não deveria ocorrer em sua entrada, feed de linha, o delimitador de linha que não estaria nos
awk
processos de registro, poisawk
processa o conteúdo de cada linha por vezIsso deve ser simplesmente possível com sed:
s/pattern/replacement/
localiza e substitui,^
significa o início da linha,*
qualquer número de espaços e*
é apenas um único espaço seguido por qualquer número de espaços. Og
final é para "global", ou seja, para substituir todas as correspondências.Substitua o espaço por
[[:space:]]
se você também tiver guias, ou seja:Se você estiver ok para usar Perl:
Se você quiser experimentar a versão one-liner na linha de comando:
perl -nE '{$_ =~ s/\s+/ /g; $_ =~s/^\s//; say $_}' file.txt
grep include /etc/nginx/nginx.conf | sed -e 's/^[[:space:]]*include[[:space:]]*//; s/[[:space:]]*;//'