linux while read 如果第 3 列小于第 2 列则切换列

linux while read 如果第 3 列小于第 2 列则切换列

我有一个制表符分隔的文件,其条目如下:

1 4 10 只猫

1 10 4 狗

我想处理它,以便如果第 3 列小于第 2 列,它们就会被切换,就像这样

1 4 10 只猫

1 4 10 狗

这个脚本似乎得到了它,但它只输出不符合条件的列,所以输出只是

1 4 10 只猫

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

我确信我犯了一些愚蠢的错误,但目前我还没有看到。

答案1

awk '$3 < $2 { temp=$3; $3=$2; $2=temp } { print }' /path/to/file

相关内容