文字と数字の両方に基づいてファイルを並べ替えるにはどうすればいいですか?

文字と数字の両方に基づいてファイルを並べ替えるにはどうすればいいですか?

次の内容のファイル:

abc[0]
abc[100]
abc[101]
.
.
abc[127]
abc[19]
abc[1]
.  
. 
abc[9]   
xyz[0]  
xyz[100]  
xyz[101]  
.
.
xyz[127]
xyz[19]
xyz[1]
.
.
xyz[9]

アルファベット順を維持しながら、括弧内の内容に従って数字順に並べたいです。

abc[0]
abc[1]
abc[2]
.
.
abc[127]
xyz[0]
xyz[1]
xyz[2]
.
.
xyz[127]

答え1

GNU ソートは--version-sortそれを実行するはずです:

sort --version-sort file

それ以外の場合は、[区切り文字として使用し、最初のフィールドで並べ替えてから、2 番目のフィールドで数値順に並べ替えます。

sort -t'[' -k1,1 -k2n file

関連情報