如何在bash中按字母和数字排序?

如何在bash中按字母和数字排序?,bash,Bash,现在我有一个文件如下: hostname=myhost1 id[12]=id12 id[3]=id3 id[2]=id2 id[7]=id7 alpha=a alpha=a hostname=myhost1 id[2]=id2 id[3]=id3 id[7]=id7 id[12]=id12 在bash中使用sort,如何按如下顺序排列文件: hostname=myhost1 id[12]=id12 id[3]=id3 id[2]=id2 id[7]=id7 alpha=a alpha=a

现在我有一个文件如下:

hostname=myhost1
id[12]=id12
id[3]=id3
id[2]=id2
id[7]=id7
alpha=a
alpha=a
hostname=myhost1
id[2]=id2
id[3]=id3
id[7]=id7
id[12]=id12
在bash中使用sort,如何按如下顺序排列文件:

hostname=myhost1
id[12]=id12
id[3]=id3
id[2]=id2
id[7]=id7
alpha=a
alpha=a
hostname=myhost1
id[2]=id2
id[3]=id3
id[7]=id7
id[12]=id12
我快到了。。。我在所有其他id之前获得
id[12]=id12

非常感谢您的帮助

您可以使用:

sort -t '[' -nk2 file
alpha=a
hostname=myhost1
id[2]=id2
id[3]=id3
id[7]=id7
id[12]=id12

-t
将字段分隔符设置为
[
-nk2
将按字段2对输入进行数字排序,只要找到
[

我可以使用以下排序命令解决问题:

sort -t '[' -k 1,1 -k 2,2n filename 

谢谢!有什么方法可以让第一列优先吗?如果找到
[
,我需要能够先按字母顺序排序,然后按数字排序。是的,您可以执行
排序-t'['-k1-nk2文件
请不要将此作为答案发布,因为这与我在答案中的内容非常接近。如果需要,您可以编辑您的问题或在任何地方留下评论。