假设我有一个包含以下列的文件:
中号
2
10个
X
是否可以根据此列进行排序以获得:
2
10个
中号
X
我尝试过使用-g和-n,但首先是输出字母,然后是数字。
提前致谢。
答案 0 :(得分:2)
版本排序似乎可以做你想要的;
sort -V <<END
M
2
10
X
END
2
10
M
X
可能需要GNU排序
答案 1 :(得分:1)
可能排序不会有这种支持。我只能想到这个作弊模式:
sort -n <(awk '/^[0-9]+$/' file) && sort <(awk '!/^[0-9]+$/' file)
2
10
M
X
答案 2 :(得分:0)
您可以按字母对其进行一次排序,然后按编号对其进行排序。所以......
sort test.txt -o test.txt && sort -n test.txt -o test.txt
答案 3 :(得分:0)
很长,但是:
re='^[0-9]+$';
while read line;
do
if ! [[ $line =~ $re ]]
then
printf "%d,A\n" "'$line"
else
printf "%d,N\n" "$line"
fi
done < file | sort -t ',' -k1n | awk -v FS=',' '{ if($2=="N"){print $1} else {printf "%c\n",$1}}'