以下の項目を含むタブ区切りファイルがあります。
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