LINUX.ORG.RU

История изменений

Исправление Kroz, (текущая версия) :

Вангую, что можно заменить 'e' на табуляцию и потом сортировать по последнему столбцу (который после 'e' - экспонента) и по предпоследнему (который перед 'e' - множитель). Но это сработает только если множитель всегда больше-равен 1 и меньше 10. Как-то так:

$ cat numbers.txt
one     2       1.5e+01
two     1       1.1e+01
three   4       1.1e+02
four    +1      1.1e+10
five    -2      7.1e-01
six     3       9.9e+00

$ cat numbers.txt | sed 's/\([0-9]\)e/\1\t/g' | sort -g -k4 -k3 | sed 's/\t\([+-][0-9]\+$\)/e\1/g'
five    -2      7.1e-01
six     3       9.9e+00
two     1       1.1e+01
one     2       1.5e+01
three   4       1.1e+02
four    +1      1.1e+10

Исправление Kroz, :

Вангую, что можно заменить 'e' на табуляцию и потом сортировать по последнему столбцу (который после 'e' - экспонента) и по предпоследнему (который перед 'e' - множитель). Но это только если целая часть множителя всегда больше 0 и меньше 10. Как-то так:

$ cat numbers.txt
one     2       1.5e+01
two     1       1.1e+01
three   4       1.1e+02
four    +1      1.1e+10
five    -2      7.1e-01
six     3       9.9e+00

$ cat numbers.txt | sed 's/\([0-9]\)e/\1\t/g' | sort -g -k4 -k3 | sed 's/\t\([+-][0-9]\+$\)/e\1/g'
five    -2      7.1e-01
six     3       9.9e+00
two     1       1.1e+01
one     2       1.5e+01
three   4       1.1e+02
four    +1      1.1e+10

Исходная версия Kroz, :

Дай тест-кейс - штук 5 строк.

Вангую, что можно заменить 'e' на табуляцию и потом сортировать по последнему столбцу (который после 'e' - экспонента) и по предпоследнему (который перед 'e' - множитель). Но это только если целая часть множителя всегда больше 0 и меньше 10. Как-то так:

$ cat numbers.txt
one     2       1.5e+01
two     1       1.1e+01
three   4       1.1e+02
four    +1      1.1e+10
five    -2      7.1e-01
six     3       9.9e+00

$ cat numbers.txt | sed 's/\([0-9]\)e/\1\t/g' | sort -g -k4 -k3 | sed 's/\t\([+-][0-9]\+$\)/e\1/g'
five    -2      7.1e-01
six     3       9.9e+00
two     1       1.1e+01
one     2       1.5e+01
three   4       1.1e+02
four    +1      1.1e+10