awk '$3 < $2 { temp=$3; $3=$2; $2=temp } { print }' /path/to/file
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.
awk '$3 < $2 { temp=$3; $3=$2; $2=temp } { print }' /path/to/file