我有一個檔案名串列,cat mylist.txt:
myfile.txt
myfile.version2.txt
myfile.version.tab.txt
如果我在 Pythonsorted()函式中使用,我會得到這個結果(除此之外):
myfile.txt
myfile.version.tab.txt
myfile.version2.txt
我想在 Bash 中也有相同的結果cat mylist.txt | sort -V:
myfile.txt
myfile.version2.txt
myfile.version.tab.txt
結果cat mylist.txt | sort:
myfile.txt
myfile.version2.txt
myfile.version.tab.txt
這不是我所期望的。如何使用最通用的方式正確排序?例如,想象有一天我會在我的串列中有這個:
myfile.version.tab2.txt
myfile.version.tab.txt
uj5u.com熱心網友回復:
地區問題?嘗試:
$ LC_ALL=C sort mylist.txt
myfile.txt
myfile.version.tab.txt
myfile.version.tab2.txt
myfile.version2.txt
uj5u.com熱心網友回復:
你確定你的問題嗎?我做了一個測驗,這是我的結果:
cat mylist.txt | sort
version.txt
version2.txt
cat mylist.txt | sort -V
version.txt
version2.txt
echo $SHELL
/bin/bash
我已經在 Ubuntu 應用程式上完成了測驗:
uname -a
Linux name 4.4.0-19041-Microsoft #1237-Microsoft Sat Sep 11 14:32:00 PST 2021 x86_64 x86_64 x86_64 GNU/Linux
uj5u.com熱心網友回復:
排序工具(例如sort和ls)尊重區域設定。一個簡單的例子:
cd "$(mktemp -d)"
touch cheetah gecko hamster iguana
ls
上面的輸出是ls什么?讓我們來看看:
$ LC_COLLATE=cs_CZ.UTF-8 ls
gecko hamster cheetah iguana
$ LC_COLLATE=en_US.UTF-8 ls
cheetah gecko hamster iguana
在最初的問題中,這歸結為語言環境的排序規則如何與 比較2,.即哪個“更大”。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/489009.html
