Troca as duas primeiras palavras de cada linha sem usar sed

2

Eu quero saber se existe uma maneira mais fácil de trocar as duas primeiras palavras de cada linha.

Digamos que meu arquivo de texto consiste dessas três linhas:

 Mary Joe
 William Edward
 Shawn Liam

Por fim, quero isso:

 Joe Mary 
 Edward William
 Liam Shawn

Eu sei que isso pode ser feito pelo comando sed fazendo isso:

sed -e "s/\([^ ]*\) *\([^ ]*\)/  /g" file

Mas isso é muito para lembrar.

Existe uma maneira mais fácil de fazer isso?

Isso é muito btw.

    
por shawn edward 25.02.2016 / 04:45

2 respostas

5

Com duas linhas de palavras, isso pode ser mais fácil:

awk '{print $2,$1}' file

Se você precisar trocar as duas primeiras palavras de um arquivo com ou sem duas palavras por linha:

awk 'NF >= 2{t=$2;$2=$1;$1=t};{print}' file

Observe que isso colaptará vários espaços em um.

    
por 25.02.2016 / 05:03
0

Se suas palavras forem delimitadas por espaço, awk poderá ser mais fácil:

awk 'NF > 1 {a = $1; $1 = $2; $2 = a};1' <file
    
por 25.02.2016 / 05:07