у Вас есть сообщения об ошибках, связанные с eth0 во время начальной загрузки? (посмотрите с dmesg
)
возможно, драйвер для Вашей платы Ethernet не загружается, когда конфигурация времени начальной загрузки работает.
сортировка
работает на целых линиях. По умолчанию она сортирует все содержимое этой строки, но -k
можно использовать для сортировки по одному или нескольким полям внутри этих строк. -t
можно использовать для изменения разделителя между полями. Не могу придумать случай, когда использование -t
без использования также и -k
имеет какой-то смысл.
Ваша вторая команда, которая эквивалентна:
printf "%s\n%s\n" "110,20,30,13" "kill,gill,burger" | sort -t',' -n
-t
kill,gill,burger
110,20,30,13
-k, что и следовало ожидать. -t','
не имеет никакого эффекта, так как меняет разделитель полей, когда вы не сказали сортировать, чтобы работать с отдельными полями, и поэтому k
сортируется перед 1
, так как его числовое значение равно 0 (и вы запросили числовое упорядочивание, используя -n
).
Сортировка работает по строке, а не по полям внутри строки.
По умолчанию сортирует по первому символу в строке и далее. Но можно сортировать и по "клавишам", кроме как по началу. Это удобно, когда нужно отсортировать по фамилии, или по числовому значению в конце строки, или так далее. Для этого установлен флаг -t
- он не будет разбивать отдельные строки и сортировать внутри них.
Если это то, что вы хотите сделать, смотрите Сортировка полей inline
Будет проще с perl
:
$ perl -F',' -anle '
BEGIN { $" = "," }
print "@{[sort {$a <=> $b} @F]}"
' file
13,20,30,110
kill,gill,burger
Это только сортировка строк, содержащих числа. Если вы хотите, чтобы сортировочные строки содержали строку типа sort -n
, попробуйте:
$ $ perl -MPOSIX=isdigit -F',' -anle '
BEGIN { $" = "," }
print "@{[ sort { isdigit($a)
? ($a <=> $b)
: ($a cmp $b)
} @F
]}"
' file
13,20,30,110
burger,gill,kill
Этот подход все еще работает, если типа содержит только строку, неудачно, если типа содержит смешанную строку, числа типа kill,gill,20
.
Возможна сортировка по запятым:
echo "a,b,z,sa,b,z,a,d,2,4a,a,dx" | tr , "\n" | sort
Выводит
2
4a
a
a
a
b
b
d
dx
sa
z
z
И если вы хотите вернуть его на одну строку:
echo "a,b,z,sa,b,z,a,d,2,4a,a,dx" | tr , "\n" | sort | tr "\n" ,