用于根据列的正/负增量切换列的脚本

时间:2015-06-30 09:30:57

标签: awk sed

情况:我有5列。第2列和第3列是最小和最大范围,第4列是表示正或负增量(1或-1)的值。第1列和第5列将被忽略。

但是,第2列和第3列当前是最小(最低数字)到最大(最高数字),​​如果第4列是-1,我希望它们被切换。 Linux中的哪个脚本可以做到这一点?

文本文件如下所示(400个中的前2行):
44110,2100,2600,1,1
44200,3400,4500,-1,2

因此,在输出中,第二行将包含开关,第一行将保持不变,如下所示:
44110,2100,2600,1,1
44200,4500,3400,-1,2

提前感谢您的回答!

1 个答案:

答案 0 :(得分:1)

$ awk 'BEGIN{FS=OFS=","} $4<0{t=$3;$3=$2;$2=t} 1' file
44110,2100,2600,1,1
44200,4500,3400,-1,2