adiciona espaço 5 vezes no início de cada linha em um arquivo de texto [duplicado]

7

Estou procurando uma linha de comando ou um script bash que adicione espaço 5 vezes antes do início de cada linha em um arquivo.

por exemplo:

abc

depois de adicionar espaços 5 vezes

      abc
    
por Edward Torvalds 05.05.2015 / 19:05

4 respostas

15

Com o GNU sed:

sed -i -e 's/^/     /' <file>

irá substituir o início de cada linha com 5 espaços. O -i modifica o arquivo no lugar, -e fornece algum código para sed executar. s informa sed para fazer uma substituição, ^ corresponde ao início da linha, então a parte entre os segundos dois caracteres / é o que irá substituir a parte correspondida no começo, isto é, o início da linha neste exemplo.

    
por 05.05.2015 / 19:11
7

Você pode usar sed

sed 's_^_     _' tmpin > tmpout

ou awk

awk '{print "     " $0}' tmpin > tmpout

Ou cole (obrigado cuonglm )

:| paste -d' ' - - - - - file

Cuidado. Estes podem ser viciante. Você pode resolver muitos problemas simples, mas chegará o momento em que você precisará atualizar para uma linguagem de script completa.

Editar: Sed script simplificado com base na resposta de Eric Renouf.

    
por 05.05.2015 / 19:10
5

Você pode usar muitas ferramentas padrão, por exemplo, com paste :

:| paste -d' ' - - - - - file

ou menor com awk :

awk '{$1="     "$1}1' file

ou mais portável com perl :

perl -pe '$_=" "x5 .$_' file
    
por 05.05.2015 / 19:18
0

Você pode usar o Vim no modo Ex:

ex -sc '%s/^/     /|x' file
  1. % seleciona todas as linhas

  2. s substituto

  3. x salvar e fechar

por 17.04.2016 / 04:51