Remover seção de configuração vazia

3

Arquivos como ~/.config/vlc/vlcrc são 99% indesejados se você quiser controlar apenas as opções de configuração. Eu tenho um script para remover os comentários, mas há uma tonelada de configuração vazia secções sobrando. Meu sed - e awk -fu não está atualizado, então como posso remover as seções de configuração vazias?

A primeira linha de uma seção de configuração corresponde a ^\[.*\]$ , e é vazia se a primeira linha for seguida por qualquer número de linhas consistindo apenas de espaço em branco, seguido por outra linha correspondente a ^\[.*\]$ ou EOF .

    
por l0b0 26.03.2011 / 12:17

4 respostas

1

Lembre-se dos cabeçalhos das seções como você os vê, mas não os imprima até ver uma linha de configuração nessa seção. Você poderia fazer isso em sed armazenando o cabeçalho da seção no espaço de espera, mas fica mais claro no awk.

awk '
  /^ *\[/ {section=$0}    # recall latest section header
  /^ *[^[#]/ {            # setting line
    if (section != "") {print section; section="";}  # print section header if not yet done
    print
  }
' ~/.vlc/vlcrc >~/config/vlc/vlcrc
    
por 26.03.2011 / 13:25
1

Como alternativa a um awk one-liner, você pode armazenar um script awk em um arquivo. Aqui está uma versão um pouco mais sofisticada do script:

#!/usr/bin/awk -f

# No section seen yet.
BEGIN { section="" }

# Match and save current section header.
/^\[.*\]$/ {
        section=$0;
        next;
}

# Ignore blank and comment-only lines.
/^[[:space:]]*(#.*)?$/ {
        next;
}

# By default do this.
{
        # Print section header if not already printed.
        #if(length(section)) {
        if(section != "") {
                print section;
                section="";
        }

        # And print current line.
        print;
}

Basta salvá-lo em um arquivo como conf-filter.awk e marcá-lo como executável com chmod + x conf-filter.awk.

    
por 31.03.2011 / 08:05
1

Eu percebo que os arquivos de configuração padrão parecem confusos, mas quando você precisa alterar algum valor de configuração, é útil ter todos os cabeçalhos e comentários no lugar. Do ponto de vista de administração a longo prazo, é geralmente aconselhável manter esses arquivos em sua forma original. Isso também permite que você acompanhe as alterações à medida que você atualiza ... cada nova versão de um programa irá alterar a configuração padrão, e se você fez o menor número de alterações possível para o seu, você será capaz de comparar facilmente usando ferramentas como diff ou vim -d para ver o que mudou.

Ter um script awk como as pessoas têm escrito é bom olhar rapidamente para os valores que estão sendo definidos, mas deve ser usado para analisar, não alterar e salvar seus arquivos de configuração.

    
por 02.04.2011 / 14:13
-1

Para manter apenas as linhas com texto, eu usaria pessoalmente o grep . .

    
por 31.03.2011 / 08:45