私はUbuntu 20.0.4を実行しています。
次のファイルの内容を検討してください(ファイル名が仮定されていますinput
)...
/zzzzz foo bar
/hij zzz
xyz abc
/abc
ijk lmnop
qwer tyuiop
abc def
実行すると、/bin/sort input
次のような結果が出ます。
/abc
abc def
/hij zzz
ijk lmnop
qwer tyuiop
xyz abc
/zzzzz foo bar
ご覧のとおり、ソートアルゴリズムは先行スラッシュを完全に無視します。sort
マニュアルページには、スラッシュを特別な方法で処理する方法は記載されていません。
ただし、各スラッシュを対応する文字に置き換えると、$
この動作は発生しません。たとえば、名前付きファイルにnewinput
次の値が含まれているとします。
$zzzzz foo bar
$hij zzz
xyz abc
$abc
ijk lmnop
qwer tyuiop
abc def
つまり、文字が文字に変更された点だけを除くと同じnewinput
です。こうするとこんな結果が出ますね…input
/
$
/bin/sort newinput
$abc
$hij zzz
$zzzzz foo bar
abc def
ijk lmnop
qwer tyuiop
xyz abc
ご覧のとおり、この場合は$
実際にはソート可能な通常の文字として扱われます/bin/sort
。
どうしたの?/bin/sort
キャラクターにどのように注意を引くことができますか/
?
どんな考えや提案でもよろしくお願いします。
修正する:Debianでこれを行うと、ソートがオンとオフの両方でうまく/
機能します$
。
それで、この動作がUbuntuの「機能」なのか気になります。
ベストアンサー1
ああ!私はそれを考えた!
私のUbuntuコンピュータではLC_ALL
に設定されておりen_US.UTF8
、DebianコンピュータではLC_ALL
に設定されていますC.UTF8
。 UbuntuコンピュータでLC_ALL
に変更すると、C.UTF8
スラッシュは通常の文字でソートされます。 on a Debian boxLC_ALL
に変更すると、en_US.UTF8
スラッシュも無視されます。
したがって、この動作はコーディングのアーティファクトのようですen_US.UTF8
。
これが正しい行動ですかen_US.UTF8
?
とにかく、適切な設定でこの「機能」を解決する方法がわかりましたLC_ALL
。
ポリスチレン:そして、上記でスティーブン・ハリスが指摘したように、設定とLANG
同じC
方法で設定すると、この問題は解決されます。LC_ALL
C.UTF8