С zsh
проще:
except=(file1 file2 notme.txt)
all=(*)
only=(${all:|except})
ls -ld -- $only
Мнемоника для ${all:|кроме}
: элементы из $all
barте из $кроме
.
Вы также можете проверить, находятся ли файлы в массиве $except
как часть квалификатора glob:
ls -ld -- *.txt(^e:'((except[(Ie)$REPLY]))':)
Или с помощью функции:
in_except() ((except[(Ie)${1-$REPLY}]))
ls -ld -- *.txt(^+in_except)
Использование-V
("сортировки по версии" ), реализовано большинствомsort
:
$ sort -t '=' -k2 -V file
string_D=10.a.y.10
string_C=10.a.y.104
string_A=10.a.y.155
string_E=10.a.y.198
string_B=10.a.y.212
string_Y=10.b.x.10
string_X=10.b.x.104
string_U=10.b.x.155
string_Z=10.b.x.198
string_V=10.b.x.212
Если a=15
иb=140
:
$ sort -t '=' -k2 -V file
string_D=10.15.y.10
string_C=10.15.y.104
string_A=10.15.y.155
string_E=10.15.y.198
string_B=10.15.y.212
string_Y=10.140.x.10
string_X=10.140.x.104
string_U=10.140.x.155
string_Z=10.140.x.198
string_V=10.140.x.212
-k2
с -t '='
заставляет sort
рассматривать данные после =
как ключ сортировки.
С помощью команды sort
:
sort -t'=' -k2 file
-t'='
-=
знак как разделитель полей
-k2
-сортировка по 2-му полю
Выход:
string_D=10.a.y.10
string_C=10.a.y.104
string_A=10.a.y.155
string_E=10.a.y.198
string_B=10.a.y.212
string_Y=10.b.x.10
string_X=10.b.x.104
string_U=10.b.x.155
string_Z=10.b.x.198
string_V=10.b.x.212
Используйте:
sort -t. -nk1,1 -nk2,2 -nk3,3 -nk4,4 file
-n
-сортировка по номерам
Вам необходимо выполнить сортировку по каждому из четырех полей .