Estou executando o Ubuntu 20.0.4.
Considere este conteúdo do arquivo a seguir (suponha que o arquivo tenha o nome input
) ...
/zzzzz foo bar
/hij zzz
xyz abc
/abc
ijk lmnop
qwer tyuiop
abc def
Se eu executar /bin/sort input
, recebo a seguinte saída ...
/abc
abc def
/hij zzz
ijk lmnop
qwer tyuiop
xyz abc
/zzzzz foo bar
Como você pode ver, a barra inicial é totalmente ignorada pelo algoritmo de classificação. Não há nada na sort
página de manual que diga algo sobre as barras sendo tratadas de qualquer forma especial.
Mas se eu substituir cada uma das barras pelo $
caractere, esse comportamento não ocorre. Por exemplo, suponha que um arquivo nomeado newinput
contém esses valores ...
$zzzzz foo bar
$hij zzz
xyz abc
$abc
ijk lmnop
qwer tyuiop
abc def
Em outras palavras, newinput
é o mesmo que input
, exceto pelo fato de que os /
caracteres foram alterados para $
caracteres. Quando eu faço /bin/sort newinput
, eu recebo esses resultados ...
$abc
$hij zzz
$zzzzz foo bar
abc def
ijk lmnop
qwer tyuiop
xyz abc
Como você pode ver, nesse caso, o $
é realmente tratado como um caractere normal e classificável por /bin/sort
.
Então, o que está acontecendo aqui? E como faço /bin/sort
para prestar atenção ao /
personagem?
Desde já agradeço qualquer ideia e sugestão.
ATUALIZAÇÃO : Se eu fizer isso no Debian, a classificação funcionará corretamente, tanto em relação a quanto /
a $
.
Então, eu estou querendo saber se esse comportamento pode ser um "recurso" do Ubuntu.
Ah! Eu percebi!
Na minha caixa Ubuntu,
LC_ALL
configurei paraen_US.UTF8
, e na minha caixa Debian,LC_ALL
configurei paraC.UTF8
. Se eu mudarLC_ALL
paraC.UTF8
minha caixa do Ubuntu, a barra é classificada como um caractere regular. E se eu mudarLC_ALL
paraen_US.UTF8
a caixa Debian, as barras também serão ignoradas lá.Portanto, esse comportamento parece ser um artefato de
en_US.UTF8
codificação.Esse comportamento é correto para
en_US.UTF8
?De qualquer forma, agora sei como contornar esse "recurso" por uma configuração apropriada para
LC_ALL
.PS : E também, como Stephen Harris apontou acima, a configuração
LANG
paraC
corrige esse problema da mesma maneira que a configuraçãoLC_ALL
paraC.UTF8
.