Как ссылаться на столбец по имени в команде awk?

Одновременно в MBR (Master Boot Record )может быть только один загрузчик.

Поскольку Linux Mint был установлен совсем недавно, если вы выберете установку GRUB во время установки, он будет установлен на ваш диск и перезапишет предыдущий. Если вы хотите использовать файл конфигурации другого дистрибутива, вам придется переустановить GRUB через этот дистрибутив на свой основной диск.

В Ubuntu, например, это можно сделать с помощью grub-install.

2
27.10.2020, 02:13
3 ответа

Насколько я знаю, в awk это невозможно сделать, кроме перебора полей заголовка и записи индекса соответствующего столбца:

awk -F '\t' 'NR==1{for(i=1;i<=NF;i++) if($i=="B") bi=i} $bi == ""' file.tsv

Если у вас есть доступ к Miller, вы можете фильтровать по имени напрямую, например.

mlr --tsv filter '$B == ""' file.tsv

или с помощью утилит из Python CSVKit:

csvgrep -t -c B -r "." -i file.tsv | csvformat -T
5
18.03.2021, 22:54

Другой вариант команды awk:

awk '!Bi{ FS="B"; $0=$0; Bi=1+gsub(/\t/,//,$1); FS="\t"; next} $Bi==""' infile
1
18.03.2021, 22:54

Вы можете обработать первую строку, чтобы сопоставить имена заголовков с номерами столбцов:

awk -F'\t' '
  NR == 1 {for (i=1; i<=NF; i++) column[$i] = i}
  $(column["B"]) == ""
' input_file
3
18.03.2021, 22:54

Теги

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