Como adicionar um caractere como # ao início da primeira linha não vazia de vários arquivos?

0

Eu tenho um monte de arquivos, que eu gostaria de usar # para comentar a primeira linha não em branco, os arquivos não estão em bom formato, então pode haver 1 ou várias linhas em branco antes da linha que eu quero comentar . De alguma forma eu posso fazer isso? obrigado!

Como exemplo:

Arquivo1:

<blank Line>
this is line 1, and I want to comment.
This is line 2...

Arquivo2:

<blank line>
<blank line>
This is line 1, and I want to comment.
This is line 2...

Espero ter declarado as perguntas com clareza. :)

    
por Coeus Wang 18.01.2014 / 03:35

3 respostas

2

echo -e '\n  \nfoo\nbar' | awk '!p && /[^[:blank:]]/ {$0 = "#" $0; p=1} 1'
<empty>
<space><space>      
#foo
bar

quando "p" == 0 e uma linha com um caractere não espacial aparece, adicione um hash e defina p = 1. Imprima todas as linhas.

    
por 18.01.2014 / 04:53
0

Uso de sed como OP necessário.

sed ':loop;$!{N; b loop};s/^[ \t\n]*/&#/' file

Arquivo de teste

<empty>
<space><space>    
<tab><tab>  
foo
bar

resultado

<empty>
<space><space>    
<tab><tab>  
#foo
bar
    
por 20.01.2014 / 01:01
0

Isso pode funcionar para você (GNU sed):

sed -i '/^\s*$/,/\S/{/\S/s/^/#/}' file1 file2 file....
    
por 22.01.2014 / 18:01

Tags