/bin/sort は入力のスラッシュを無視するようです。

/bin/sort は入力のスラッシュを無視するようです。

私は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_ALLC.UTF8

おすすめ記事