Удалить все знаки препинания, кроме запятой в регулярном выражении в awk - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть переменная

 local= "[ 'service center','New' ]"

Я использовал следующий код awk для удаления квадратных скобок и одинарных кавычек,

  local=gensub(/[\[\]']+/, "", "g", local);
  local=gensub(/[^,[:punct:][:space:]]/, "", "g", local);

Ожидаемое значение O / P равно

local = "service center,New"

Код, который я написал, не работает

1 Ответ

0 голосов
/ 01 февраля 2019

Исходный вопрос: _Как выбрать все знаки пунктуации, кроме с регулярным выражением.

Группа [:punct] определяется как символов, которые не являются буквами, цифры, управляющие символы или пробелы .

[:punct] = [^[:alnum:][:cntrl:][:space:]]

Итак, вы хотите символы, которые не являются буквами, цифрами, управляющими символами, пробелами или -символ .

[^[:alnum:][:cntrl:][:space:],]

После редактирования OP:

Следующее должно выполнить запрошенное:

gsub(/(^[^[:alnum:],]*|[^[:alnum:],[:blank:]]|[^[:alnum:],]*$)/, "", local)
...