Como remover texto do início de cada linha e colá-lo no final de cada linha no terminal

0

Eu tenho uma longa lista de números e valores que se parecem com isso:

100 value1 value2

Existem aproximadamente 150 linhas nesta lista e quero mover todos os números para o final dos valores, para que fique assim:

value1 value2 100

Eu tentei usar este comando para fazer o trabalho:

awk -F: '{print $2 $3 $1}' ~path/to/file.txt

mas apenas imprime tudo no arquivo

100 value1 value2
101 value3 value4
102 value5 value6

Por favor, ajude!

Obrigado antecipadamente!

    
por Brandon K 08.01.2017 / 01:41

2 respostas

2

Na verdade, você estava perto. :)

Experimente: awk '{print $2,$3,$1}' filename > output_file

E verifique com: cat output_file

    
por 08.01.2017 / 01:44
1

Usando awk :

awk '{ num = $1;$1=""; sub(/^ /,""); print $0,num; }' ~path/to/file.txt

Isso permite qualquer número de colunas. Explicação:

  • Salve a primeira coluna na variável "num" e defina-a como nada (ou seja, "")
  • Remova o espaço extra entre as duas primeiras colunas (usando sub)
  • Imprimir
    • $ 0 - a linha inteira
    • "num" a primeira coluna original

Você também pode usar sed :

sed 's/\([0-9]\+\) \(.*\)/ /' ~path/to/file.txt
    
por 08.01.2017 / 05:00