Как найти имена разделов данного блочного устройства?

Лучшим инструментом для работы , вероятно, является join , но, поскольку вы упомянули awk , вот другой подход:

$ awk -F',' -vOFS="," 'FNR==NR{a[$1]=$2;b[$1]=$3; next}{print $0,a[$3],b[$3]}' file1 file2
Converting,:Developer::|[E],android,Exact,,,,8,31,1,2
Converting,:Developer::|[E],osx,Exact,,,,8,31,2,5
Converting,:Developer::|[E],windows,Exact,,,,8,31,,

Он использует два массива, a и b , которые имеют первое поле file1 как ключи, а второе и третье как значения, соответственно. FNR == NR {... next} гарантирует, что в массивах будет сохранен только 1-й файл. Затем при обработке второго файла мы печатаем строку файла ( $ 0 ), за которой следуют значения, соответствующие его первому полю из массивов a и b . -vOFS = "," устанавливает разделитель поля вывода на запятую, чтобы получить желаемый формат вывода.

Или более загадочно:

$ awk -F',' -vOFS="," 'FNR==NR{a[$1]=$2","$3;next}{print $0,(a[$3]?a[$3]:",")}' file1 file2
Converting,:Developer::|[E],android,Exact,,,,8,31,1,2
Converting,:Developer::|[E],osx,Exact,,,,8,31,2,5
Converting,:Developer::|[E],windows,Exact,,,,8,31,,

0
19.02.2019, 13:32
2 ответа

lsblkвыводит все связанные блочные устройства. Это включает в себя разделы указанного устройства. Поскольку он, конечно, включает само устройство и lsblkне позволяет исключить определенные устройства, в приведенном ниже примере решения просто используется инвертированныйgrep:

lsblk -o KNAME -n /dev/mmcblk0 | grep -v "^mmcblk0$"

Для полных путей (, которые также упрощают создание строки grep ), можно использовать -p, например.:

lsblk -po KNAME -n /dev/mmcblk0 | grep -v "^/dev/mmcblk0$"
1
28.01.2020, 03:59

Для этого можно использовать несколько инструментов. Один из инструментов, которым я часто пользуюсь, это fdisk. fdisk — это то, что будет перечислять разделы вашего блочного устройства, а также указывать точные размеры для вас. fdisk— довольно универсальная программа, которая также может изменять внутренние свойства ваших разделов с точки зрения хранилища, поэтому будьте очень осторожны при ее использовании.

В случае перечисления раздела вы просто хотите выполнить следующую команду :fdisk -l <name of block device>. С этого момента вы сможете увидеть точные размеры, имя и тип разделов, которые вы ищете. Если вы хотите использовать fdiskдля других целей, связанных с жестким диском, используйте команду man, чтобы открыть страницу руководства для fdisk:

.

man fdisk

0
28.01.2020, 03:59

Теги

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