Лучшим инструментом для работы , вероятно, является 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,,
lsblk
выводит все связанные блочные устройства. Это включает в себя разделы указанного устройства. Поскольку он, конечно, включает само устройство и lsblk
не позволяет исключить определенные устройства, в приведенном ниже примере решения просто используется инвертированныйgrep
:
lsblk -o KNAME -n /dev/mmcblk0 | grep -v "^mmcblk0$"
Для полных путей (, которые также упрощают создание строки grep ), можно использовать -p
, например.:
lsblk -po KNAME -n /dev/mmcblk0 | grep -v "^/dev/mmcblk0$"
Для этого можно использовать несколько инструментов. Один из инструментов, которым я часто пользуюсь, это fdisk
. fdisk — это то, что будет перечислять разделы вашего блочного устройства, а также указывать точные размеры для вас. fdisk
— довольно универсальная программа, которая также может изменять внутренние свойства ваших разделов с точки зрения хранилища, поэтому будьте очень осторожны при ее использовании.
В случае перечисления раздела вы просто хотите выполнить следующую команду :fdisk -l <name of block device>
. С этого момента вы сможете увидеть точные размеры, имя и тип разделов, которые вы ищете. Если вы хотите использовать fdisk
для других целей, связанных с жестким диском, используйте команду man
, чтобы открыть страницу руководства для fdisk
:
man fdisk