Anexa uma string ao início da segunda linha usando unix

0

Eu quero acrescentar uma string ao início da segunda linha do meu arquivo de texto, por exemplo:

1
2
3

deve se tornar:

1
42
3

Alguma ideia sobre como proceder com isso?

    
por Souvik 19.08.2015 / 20:17

4 respostas

7

Você poderia fazer isso com sed, se você tem o GNU sed você pode usar -i para modificá-lo da seguinte maneira

sed -i -e '2s/^/4/' source

Isso dirá sed para modificar o local ( -i ) e executar a substituição de expressão regular ( s/^/4/ ) para corresponder ao início da linha ( ^ ) com 4 e faça isso apenas no número de linha 2 . Tudo isso é feito no arquivo chamado source

    
por 19.08.2015 / 20:20
7

POSIX um:

printf '\n4' | paste -d'
printf '\n4' | paste -d'%pre%' - file
' - file
    
por 19.08.2015 / 20:27
0

awk solução obrigatória:

awk -v prepend="<your-text-here>" 'NR==2{print prepend $0;next};1' file

Ou a solução de variável de ambiente proposta por @ comentário do cuonglm :

prepend="<your-text-here>" awk 'NR==2{print ENVIRON["prepend"] $0;next};1' file
  • -v prepend=... atribui uma variável em awk chamada prepend com o valor especificado.
  • NR==2 aplica o seguinte comando para a segunda linha.
  • print prepend $0 é adicionado à linha, lembre-se de next para pular para a próxima linha.
  • O% final 1 é um atalho para {print $0} , que é para imprimir a linha inteira.
por 20.08.2015 / 10:45
0

Você pode usar o Vim no modo Ex:

ex -sc '2s/^/4/|x' file
  1. 2 selecione a segunda linha

  2. s substituto

  3. x salvar e fechar

por 17.04.2016 / 04:44