Как удалить двойные кавычки, если они находятся внутри двойных кавычек

Intel 5100AGN должен использовать драйвер iwlwifi, поэтому он должен быть установлен вместе с прошивкой только с базовым минимальным дистрибутивом USB с минимальными возможностями, по крайней мере, со сборкой glibc. Я не уверен в musl. Все работало для моей базовой установки с glibc без использования сетевого подключения. Затем мне пришлось настроить Wi-Fi, и я наконец смог подключиться.

Я думаю, у вас могут быть проблемы с конфигурацией. Вы можете проверить dmesg на наличие проблем. Вы можете попробовать «iw phy0 info» и посмотреть, что там написано.

Я всегда добавляю 70 -постоянных -net.rules в /etc/udev/rules.d/, чтобы мой Wi-Fi каждый раз назывался wlan0. Для этого нужен MAC-адрес беспроводного адаптера. Затем я настраиваю запрос wpa _-wlan0.conf с парольной фразой wpa _. Затем настройте /etc/sv/dhcpcd -wlan0 и начните со связывания в /var/service. Все это объясняется в вики пустоты для сетей.

Если вы новичок в системе void, то настольные установки имеют настройку сети с рабочего стола с помощью графического приложения и могут быть более простым способом начать, чем базовый минимальный дистрибутив.

РЕДАКТИРОВАТЬ :Может быть, проверить в BIOS, включена ли беспроводная карта?

0
02.03.2021, 14:04
6 ответов

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

$ sed 's/"//g; s/,/","/g; s/.*/"&"/' file
"Apple grape","Bananaorange","Red green"
2
18.03.2021, 22:27
sed 's/\([^,]\)"\([^,]\)/\1\2/g' file

Это заменит все не -перекрывающиеся последовательности не -запятой -([^,]), двойной -кавычки и не -запятой -на то же самое, но без двойной кавычки.

Это не обработает ситуации, когда шаблон будет совпадать в перекрывающихся подстроках, как, например, ...""...и ...".".... Я пока оставляю это, так как неясно, могут ли эти случаи возникать в данных пользователя. Выполнение подстановки дважды решит эти случаи.

Вывод производится на терминал, поэтому перенаправляйте в файл, если хотите его сохранить.

3
18.03.2021, 22:27

Вы можете попробовать это:

$ sed 's/"\([^,"]*\)"\([^,"]*\)"/"\1\2"/g' foo.txt 
"Apple grape","Bananaorange","Red green"
"Apple grape","Bananaorange","Red green"
0
18.03.2021, 22:27

Двойная кавычка (s ), которую мы ищем, всегда будет иметь соседей с обеих сторон. И соседи всегда будут незапятыми. Но поскольку sed не выполняет поиск, поэтому регулярное выражение будет потреблять входные данные. Следовательно, мы должны зациклиться.

sed -Ee '
  :loop
    s/([^,])"([^,])/\1\2/
  tloop
' file

Perl с обходами делает его кратким.

perl -lpe 's/(?<=[^,])"(?=[^,])//g' file

В качестве альтернативы мы преобразуем двойные кавычки, используемые при формировании разделителей полей. Тогда какие цитаты выделяются, те и идут. Затем выполняем обратное преобразование.

sed -Ee '
  s/^"|","|"$/\n/g
  s/"//g
  s/^\n|\n$/"/g
  s/\n/","/g
' file

Примечание :GNU sed с расширенным регулярным выражением -E используется.

1
18.03.2021, 22:27

В GNU awkс использованием функции gensub():

awk  '{print gensub(/([[:alpha:]]+)"([[:alpha:]]+)/,"\\1\\2","g")}' file
"Apple grape","Bananaorange","Red green"
"Apple grape","Bananaorange","Red green"
0
18.03.2021, 22:27

Проверено с gawkиmawk:

awk -F, '$2~/[a-z]"[a-z]/ { split($2, a, "\""); for (i in a) n2 = n2 a[i]; $2 = "\"" n2 "\"" }1' file
0
18.03.2021, 22:27

Теги

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