Adicione ou remova um caractere no local especificado no arquivo

0

Por exemplo, tenho um arquivo de texto com as seguintes linhas (nº 423 e 424):

    //printf("%d\t %d\t %d\t %d\t %d\t %d\t %d\t %d\t %d\t %d\n",i,c1,c2,c3,c11,c12,c21,c22,c31,c32); //testcells
    printf("%d\t %d\t %d\t %d\t %d\t %d\t %d\t %d\t %d\t %d\t %d\t %d\t %d   \n",i,r1,r2,r3,r11,r22,r33,r44,r55,r66,r77,r88,r99); //testnodes

Agora, suponha que eu queira remover // na linha 423 th , ou seja, os caracteres da coluna 5 e 6 da linha 423 th . E, ao mesmo tempo, suponha que eu queira adicionar // na linha 424 th nas colunas 5 e 6 de modo que a saída esperada seja

    printf("%d\t %d\t %d\t %d\t %d\t %d\t %d\t %d\t %d\t %d\n",i,c1,c2,c3,c11,c12,c21,c22,c31,c32); //testcells
    //printf("%d\t %d\t %d\t %d\t %d\t %d\t %d\t %d\t %d\t %d\t %d\t %d\t %d   \n",i,r1,r2,r3,r11,r22,r33,r44,r55,r66,r77,r88,r99); //testnodes

Como faço isso? (preferencialmente com sed ou awk )

    
por Pandya 14.09.2017 / 15:46

1 resposta

3

Um caminho:

sed -e '423s!//!!; 424s!printf!//&!' < input > output

Isso pressupõe que o primeiro // na linha 423 é o que você deseja remover e que é o printf na linha 424 que você deseja comentar.

Para atualizar especificamente com base nas colunas:

sed -e '423s!^\(....\)//!!; 424s!^\(....\)!//!' < input > output
    
por 14.09.2017 / 15:56