`sort`は疑問符を無視します。

`sort`は疑問符を無視します。

最初の列の名前に基づいてファイルを並べ替える必要があります。一部の名前は疑問符で終わります。sortソート中は常にこの疑問符を無視してください。

sort -k 1 -t , <<TEST
a?,1
a,2
b?,2
b,1
TEST
a?,1
a,2
b,1
b?,2

sortこうすることで、疑問符をどのように配置するかはあまり気にしません。着実に。しかし、これは事実ではなく、2番目の列が代わりに考慮されるようです。でもsort最初の列のみをキーとして使用するように明示的に指示する場合。

バージョン情報:

$ sort --version
sort (GNU coreutils) 8.22
Packaged by Gentoo (8.22 (p1.0))

ちなみに、sort上記はOS X 10.9(「sort(GNU coreutils)5.93」と識別されています)で期待どおりに機能します。

答え1

を使用すると、LC_ALL=Cソート8.21で正しい結果が得られるようです。

$ LC_ALL=C sort -k1,1 -t , sample.txt     
a,2
a?,1
b,1
b?,2

またはあなたが書いたように:

$ cat | LC_ALL=C sort -k1,1 -t , <<TEST
a?,1
a,2
b?,2
b,1
TEST
a,2
a?,1
b,1
b?,2

ところで、あなたは必要ありませんcat

$ LC_ALL=C sort -k1,1 -t , <<TEST
a?,1
a,2
b?,2
b,1
TEST
a,2
a?,1
b,1
b?,2

LC_COLLATE=C私にも効果があります。

sort -k1vsの使用についてsort -k1,1

上記の例では、すべて変更されたバージョンのコマンドを代わりにsort使用しています。なぜなら、他の特殊文字(例えば。-k1,1-k 1%

のみ使用-k1:

$ printf '%s\n' a a%,foo a,bar | LC_ALL=C sort -t, -k1    
a
a%,foo
a,bar

そして-k1,1:

$ printf '%s\n' a a%,foo a,bar | LC_ALL=C sort -t, -k1,1
a
a,bar
a%,foo

関連情報