Linux列排序功能

时间:2015-10-22 17:34:56

标签: linux bash sorting

我正在尝试按输入的列对包含4列的文件进行排序。无论$ field的输入是什么,下面的代码都只会根据第一列进行排序。

if (( sort ))
then
        if [ $field==1 ]
        then
                sort -k1 $file -o $file
        elif [ $field==3 ]
        then
                sort -k3 $file -o $file
        elif [ $field==4 ]
        then
                sort -k4 $file -o $file
        else #for field 2-- this is default
                sort -k2 $file -o $file
        fi
fi

1 个答案:

答案 0 :(得分:0)

这可以更简单地完成:

if [ $field -lt 1 -o $filed -gt 4 ]; then
    filed=2
fi
sort -k$field $file -o $file

<强>更新即可。如果field包含数字,则以前的版本有效。 以下是使用内置bash测试[[的新内容:

if [[ ! $field =~ ^[0-9]+$ || $field < 1 || $field > 4 ]]; then
    filed=2
fi
sort -k$field $file -o $file

此处$field =~ '^[0-9]+$'正在检查变量是否包含数字。