нужно отсортировать по порядку

Чтобы уточнить предыдущий ответ, приведем несколько примеров.
Это может быть при попытке создать папки внутри системных папок:

ubuntu:~$ mkdir /proc/test
mkdir: cannot create directory ‘/proc/test’: No such file or directory
ubuntu:~$ mkdir -p /dev/null/test
mkdir: cannot create directory ‘/dev/null’: Not a directory

Или если у вас нет прав доступа к предыдущей папке:

ubuntu:~$ mkdir -p /root/test
mkdir: cannot create directory ‘/root’: Permission denied

Также произойдет сбой, если в папке есть файл с таким же именем:

ubuntu:~$ touch /tmp/test
ubuntu:~$ mkdir -p /tmp/test
mkdir: cannot create directory ‘/tmp/test’: File exists
0
11.02.2020, 07:49
2 ответа

Coreutils sortдолжны выполнить эту работу

$ var="vas-1 vas-2 vas-3.... vas-10 vas-11"
$ echo "${var// /\\n}"
vas-1
vas-10
vas-11
vas-2
vas-3
..

# Sorted
$ echo "${var// /\\n}" | sort -n -t '-' -k 2
vas-1
vas-2
vas-3
..
vas-10
vas-11

${var// /\\n}это bashконкретная вещь. Он заменяет пробелы новыми строками, поэтому он будет печатать вывод, разделенный новой строкой -.

2
28.04.2021, 23:23

С оболочкой zsh:

# use an array instead of a scalar variable to store several values:
$ array=(vas-10 vas-2 vas-3.... vas-1 vas-11)
$ print -rC1 -- ${(no)array}
....
vas-1
vas-2
vas-3
vas-10
vas-11

Гдеoфлаг расширения параметраoупорядочивает элементы массива при расширении, а nделает этот порядок nчисловым (и print -rC1печатает их raw on1Cколонна ).

Если данные изначально должны быть в скалярной переменной и вы хотите разделить их по пространству, вы можете:

array=(${(s: :)var}) # split explicitly on SPC only

или

array=($=var) # split on $IFS (SPC, TAB, NL, NUL by default)
0
28.04.2021, 23:23

Теги

Похожие вопросы