Вам просто нужно творчески подойти к разделителю полей:
$ awk 'BEGIN {FS="_|-"} {print $2}' input
5
Хитрость с FS
в том, что это не строка; это регулярное выражение.
Чтобы объяснить немного более подробно, как вы просите ниже:
Сценарий awk
может определять блок кода с именем BEGIN
, который выполняется до обработки любых входящих данных.
Я использую этот блок кода для определения разделителя полей(FS
)с помощью регулярного выражения в виде дефиса(-
)или подчеркивания(_
).
Следующий блок кода, {print $2}
, будет печатать второе поле (i. е. вторая строка символов, разделенная до сих пор разделителем /-|_/
), который является 5
, который вы ищете. Блок кода без префикса будет выполняться для каждой записи, прочитанной awk
.
Если вам нужно, чтобы USB-накопитель был доступен в любой системе Windows без предварительной установки специальных драйверов с другого носителя, тогда единственными вариантами являются FAT32 и NTFS (и, возможно, exFAT ). Ни один из них не будет поддерживать настоящие разрешения unix.
Если ваша цель состоит в том, чтобы просто сохранить файлы с неповрежденными разрешениями unix, вы можете использовать tar
или какой-либо другой инструмент архивирования для упаковки файлов и информации об их разрешениях в файл tar.bz2
или аналогичный. В Windows обычные утилиты WinZip и бесплатные утилиты 7zip прекрасно открывают файлы tar.bz2
.
Если файлы должны быть немедленно запущены на USB-накопителе, вы можете использовать параметр монтирования umask=000
, чтобы указать разрешения для каталогов и файлов в файловой системе FAT или NTFS, но это все -или -. ] ничего общего :с этой опцией, все файлы и каталоги в файловой системе будут иметь разрешения, эквивалентные chmod 777
.