Ошибка загрузки Fedora под VirtualBox

По умолчанию awkиспользует пробелы для определения полей, что объясняет, почему вы получаете вывод, который видите. Поскольку вы хотите использовать запятую для разделения полей, вам нужно указать это с помощью-F:

awk -F, '{...}' 

Чтобы awkвывод выводился через запятую, необходимо установить переменную OFS:

awk -F, -vOFS=, '{...}' 

Настоящая трудность здесь заключается в том, что вы пытаетесь рассматривать [role1, role2, role3]как одно поле, но это 3 поля. Там есть запятые, поэтому они будут разделены на [role1, role2и role3]. Если вы знаете, что там всегда будет ровно 3 поля, это просто:

$ awk -F, -vOFS=, '{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11}' file
hostname,hostname.domain.com,hostname.domain.com,windows,6.2.9200,1.2.3,location,environment,[role1, role2, role3]

Тем не менее, на основе необработанных данных, которые вы сейчас добавили, хотя надлежащий синтаксический анализатор CSV всегда будет лучшим подходом,вы все еще можете сделать это в awk. Просто запустите это на своих исходных входных данных:

$ awk -F']' -vOFS=, '{gsub(/"/,"");print $1"]"}' file
hostname,hostname.domain.com,hostname.domain.com,windows,6.2.9200,1.2.3,location,environment,[role1, role2, role3]

Хитрость заключается в том, чтобы использовать ]в качестве разделителя полей и указать awkпечатать только 1-е поле. Это напечатает все до первого ]. Затем мы добавляем обратно ](, так как он удаляется при построении полей ). gsubудаляет все кавычки.

1
08.02.2021, 17:01
1 ответ

http://bugzilla.redhat.com/show_bug.cgi?id=1652845

описывает проблему, ищите «разрешить вложение». Говорят, что Red Hat не решит эту проблему с Fedora 28.

Предложение mattdm о создании новой виртуальной машины Fedora, Fedora 33 сработало.

0
18.03.2021, 22:31

Теги

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