acrescentar ao final da linha sed / awk

1

Isso provavelmente é fácil e algo não está clicando em mim e na minha falta de café agora. Eu tenho um arquivo com várias linhas que começam com uma aba, em seguida, a palavra GROUP algo {

Algumas dessas linhas, por alguma razão, soltam a chave em algumas condições. A solução rápida é usar sed / awk para anexar o colchete a essa linha, mas não as linhas onde o suporte já existe. Eu estou no meio do caminho com, mas como você pode ver isso irá acrescentar a chave aberta a todas as linhas que começam com uma aba e GROUP.

sed '/[ \t]GROUP/ s/$/ {/' scst.conf.test > greg.scst.out
    
por egorgry 08.03.2012 / 14:57

3 respostas

4

Você pode tentar este comando sed :

$ sed '/[ \t]GROUP/ s/{*$/ {/' scst.conf.test > greg.scst.out
    
por 08.03.2012 / 15:23
2

Verificando GROUP something sem { e fazendo referência novamente, em seguida, substituindo por { .

sed 's|\([ \t]GROUP.*\)[^{]$| {|' yourfile
    
por 08.03.2012 / 15:26
2

Com o seguinte arquivo de teste como test.txt :

    GROUP blah {
    GROUP blah {
    GROUP blah
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {

O script sed a seguir faz o negócio:

sed -r 's/\tGROUP(.*)[^{]$/&{/' test.txt

Com a saída assim:

    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {

Isso está correto? O que ele faz é procurar por linhas que tenham tab-> GROUP, mas não tenham {no final. Substitui-o pela linha correspondente (que é o que o & faz) e acrescenta um {depois.

    
por 08.03.2012 / 15:27