linux ao ler para alternar colunas se a coluna 3 for menor que a coluna 2

1

Eu tenho arquivos separados por tabulações com entradas como esta:

1 4 10 gato

1 10 4 cão

Eu quero processá-lo para que, se a coluna 3 for menor que a coluna 2, eles sejam alternados, assim

1 4 10 gato

1 4 10 cão

Este script parece entender, mas só exibe colunas que não atendem aos critérios, então a saída seria apenas

1 4 10 gato

while read field1 field2 field3 field4; do
  if [[ "$field2" -gt "$field3" ]] ; then 
      awk '{t=$field2; $field2=$field3; $field3=t; print; } '
  fi
done < filename.txt

Tenho certeza de que estou cometendo algum erro estúpido, mas no momento não estou vendo.

    
por user212001 23.01.2017 / 18:56

1 resposta

4

awk '$3 < $2 { temp=$3; $3=$2; $2=temp } { print }' /path/to/file
    
por 23.01.2017 / 19:00

Tags