我有一个带有名字的文件,我想按字母顺序排序,但小写必须在大写之前。
所以如果我有例如:
Any
ANA
Ana
应按以下方式排序:
Ana
Any
ANA
如果可能的话,我想通过排序实现这一目标,是否有任何选择?
我目前的排序方式:
cut -d";" -f2-3 $1 | paste - $1 | sort | cut -f2- >> sorted.txt
参数$1
中给出的文件中的行如下所示:
12345;Name;Lastname
答案 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