2

我有以下输出:

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
4

2 回答 2

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选项

于 2014-05-07T11:16:55.763 回答
0
sed -e 's/=\(.*\)$/=000000\1_\1/;s/=0*\([0-9]\{7\}\)_/=\1_/' YourFile | sort | sed -e 's/=[0-9]_/=/'

准备一个基本的sort不是数字的,也不是取列而不是放回原来的形式

于 2014-05-07T11:36:42.323 回答