首先按小写排序列表

时间:2018-05-05 23:46:31

标签: linux bash sorting

我有一个带有名字的文件,我想按字母顺序排序,但小写必须在大写之前。

所以如果我有例如:

Any
ANA
Ana

应按以下方式排序:

Ana
Any
ANA

如果可能的话,我想通过排序实现这一目标,是否有任何选择?

我目前的排序方式:

cut -d";" -f2-3 $1 | paste - $1 | sort | cut -f2- >> sorted.txt

参数$1中给出的文件中的行如下所示:

12345;Name;Lastname

3 个答案:

答案 0 :(得分:0)

这就是我要找的东西:sort -t&#39 ;;' -k 2,2<一些-csv.log

非常感谢@dmadic

答案 1 :(得分:-1)

如果你的input.txt类似于:

Any
ANA
Bill
BOB
Ana

并且您希望输出为:

Ana
Any
Bill
ANA
BOB
那么,也许你可以尝试类似的东西:

grep -E "[a-z]+" input.txt | sort  > lower.txt
grep -wE "[A-Z]+" input.txt | sort > upper.txt
cat lower.txt upper.txt

答案 2 :(得分:-1)

使用Perl你可以说:

perl -e '
print sort {
    ($ka = (split(/;/, $a))[1]) =~ tr/a-zA-Z/A-Za-z/;
    ($kb = (split(/;/, $b))[1]) =~ tr/a-zA-Z/A-Za-z/;
    $ka cmp $kb;
} <>' input.txt