我有一個(gè)帶有名稱的文件,我想按字母順序?qū)λ鼈冞M(jìn)行排序,但小寫字母必須在大寫字母之前。因此,如果我有例如:AnyANAAna它應(yīng)分類為:AnaAnyANA如果可能的話,我想通過排序來實(shí)現(xiàn)這一點(diǎn),它有什么選擇嗎?我目前的排序方式:cut -d";" -f2-3 $1 | paste - $1 | sort | cut -f2- >> sorted.txt參數(shù)中給出的文件中的行$1如下所示:12345;Name;Lastname
3 回答

慕容708150
TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果您的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

波斯汪
TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
使用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
添加回答
舉報(bào)
0/150
提交
取消