Lubuntu script para inverter a ordem de um estado de capital de estado-capital da lista

0

Sou novo no Linux e tenho um projeto vencido em uma hora e sei que posso usar tac para reverter uma lista, mas como inverter a ordem como:

Birmingham-Alabama
Atlanta-Georgia
Topeka-Kansas

Para isso:

Alabama-Birmingham
Georgia-Atlanta
Kansas-Topeka
    
por David Blanchard 11.12.2015 / 04:38

1 resposta

1

Se você tem apenas dois campos:

awk  -F- '{print $2"-"$1}' file
  • Imprime apenas o segundo campo, seguido por um traço, seguido pelo primeiro campo.

Ou com o bash:

while IFS="-" read -r a b; do echo "$b-$a"; done <file
  • IFS define o valor do separador de campo interno de bashs.
  • read lê a linha de entrada por linha e salva o primeiro campo no vairable $a e o segundo campo em $b .
  • echo , em seguida, imprime os dois com um traço.
  • <file fornece o conteúdo de file como entrada.

Se o número de campos não for sempre o mesmo:

awk  -F- 'OFS="-"{c=1;for(i=NF;i>=1;i--){a[c]=$i;c++}for(i=1;i<=NF;i++){$i=a[i]}}1' file
    
por chaos 11.12.2015 / 08:55