Bash 仅按前两列对文件排序,并保持输入顺序,以防列具有相同的值
我有一个输入文件,其中的行我只想按前两列排序。我想知道在bash中是否有使用sort命令的方法 例如输入文件:Bash 仅按前两列对文件排序,并保持输入顺序,以防列具有相同的值,bash,sorting,columnsorting,stability,Bash,Sorting,Columnsorting,Stability,我有一个输入文件,其中的行我只想按前两列排序。我想知道在bash中是否有使用sort命令的方法 例如输入文件: cat checkstart.txt dev XCUBOBS149 /etc/init.d/DSEngine_srv dev XCUBOBS150 /etc/init.d/DSEngine_srv dev XCUBOBS149 NO_LINKS_TO_STARTSCRIPTS dev XCUBOBS149 ufabric:x:46000:46000::/home/ufabric:/bi
cat checkstart.txt
dev XCUBOBS149 /etc/init.d/DSEngine_srv
dev XCUBOBS150 /etc/init.d/DSEngine_srv
dev XCUBOBS149 NO_LINKS_TO_STARTSCRIPTS
dev XCUBOBS149 ufabric:x:46000:46000::/home/ufabric:/bin/bash
dev XCUBOBS149 export JAVA_HOME=/soft/jdk/jdk1.7.0_79/
我正试着和你谈谈
sort-b-k1,2 checkstart.txt
dev XCUBOBS149 /etc/init.d/DSEngine_srv
dev XCUBOBS150 /etc/init.d/DSEngine_srv
dev XCUBOBS149 NO_LINKS_TO_STARTSCRIPTS
dev XCUBOBS149 ufabric:x:46000:46000::/home/ufabric:/bin/bash
dev XCUBOBS149 export JAVA_HOME=/soft/jdk/jdk1.7.0_79/
但结果并不是我所期望的,因为它按字母数字顺序对所有行进行排序:
我希望得到如下结果文件:
您正在寻找排序算法<代码>排序提供了一个。您可以使用-s
选项启用它
$ sort -s -k1,2 checkstart.txt
dev XCUBOBS149 /etc/init.d/DSEngine_srv
dev XCUBOBS149 NO_LINKS_TO_STARTSCRIPTS
dev XCUBOBS149 ufabric:x:46000:46000::/home/ufabric:/bin/bash
dev XCUBOBS149 export JAVA_HOME=/soft/jdk/jdk1.7.0_79/
dev XCUBOBS150 /etc/init.d/DSEngine_srv
非常感谢@Socowi,这正是我想要的!
$ sort -s -k1,2 checkstart.txt
dev XCUBOBS149 /etc/init.d/DSEngine_srv
dev XCUBOBS149 NO_LINKS_TO_STARTSCRIPTS
dev XCUBOBS149 ufabric:x:46000:46000::/home/ufabric:/bin/bash
dev XCUBOBS149 export JAVA_HOME=/soft/jdk/jdk1.7.0_79/
dev XCUBOBS150 /etc/init.d/DSEngine_srv