Recuo como primeira linha

2

Como posso recuar um arquivo como sua primeira linha?

Exemplo:

Um arquivo contendo

     x=1+2+3+4+
5+6+7+8
+9+10+12

deve ser convertido para

     x=1+2+3+4+
     5+6+7+8
     +9+10+12

Eu preciso disso dentro de um script de shell em um sistema Linux. One-liners são preferidos.

    
por jofel 13.12.2012 / 17:31

3 respostas

5

Uma maneira de usar perl :

perl -pe 'if ($. == 1) { m/^(\s*)/; $space = $1 || q{}; next } s/^\s*/$space/' infile

Produz:

    x=1+2+3+4+
    5+6+7+8
    +9+10+12
    
por 13.12.2012 / 17:47
5

Você pode fazer isso no awk:

awk 'NR==1{split($0,a,/[^ \t]/)}{sub(/^[ \t]*/,a[1]);print}' file.in
    
por 13.12.2012 / 17:55
2

com sed:

sed -e '1{h;s/[^[:blank:]].*//;x;b' -e '}' -e 'G;s/[[:blank:]]*\(.*\)\n\(.*\)//'
    
por 13.12.2012 / 20:59