我有以下输出:
aaa=12
bbb=124
cccc=1
dddd=15
我想根据value.s对上面的行进行排序,所以输出应该如下所示:
$ cat file | awk_or_sed_or_any_command
cccc=1
aaa=12
dddd=15
bbb=124
更新
我尝试了以下命令:
$ cat file | awk -F '=' '{print $2"="$1}' | sort | awk -F '=' '{print $2"="$1}'
但它太长了。
还有其他建议比上述建议更好吗?
注意:我的linux使用busybox中的排序,它只支持以下选项:
$ sort --help
BusyBox v1.19.4 (2014-04-04 18:50:39 CEST) multi-call binary.
Usage: sort [-nru] [FILE]...
Sort lines of text
-n Sort numbers
-r Reverse sort order
-u Suppress duplicate lines
答案 0 :(得分:6)
使用以下命令
sort -n -t = -k 2 your_file
给了我
alex@rhyme ~ $ ash
$ cat <<EOF | sort -n -t = -k 2
> aaa=12
> bbb=124
> cccc=1
> dddd=15
> EOF
cccc=1
aaa=12
dddd=15
bbb=124
$ which sort
/usr/bin/sort
$ LANG=C sort --version
sort (GNU coreutils) 8.21
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Mike Haertel and Paul Eggert.
检查sort manpage其他sort
选项
答案 1 :(得分:0)
sed -e 's/=\(.*\)$/=000000\1_\1/;s/=0*\([0-9]\{7\}\)_/=\1_/' YourFile | sort | sed -e 's/=[0-9]_/=/'
准备一个基本的sort
而不是数字,也不是采取列,而不是以原始形式放回