Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: awk: подстановка переменной в регексп  (Прочитано 864 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ReNzRv

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
awk: подстановка переменной в регексп
« : 20 Сентября 2016, 00:57:46 »
строка: str = "One two three four five"
слово: wrd = "One"

Как определить есть ли в строке str в начале слово wrd?

Пытался по разному, но неполучается:
awk 'BEGIN{str = "One two three four five"; wrd = "One"; if(str ~ /^wrd/){print "0"}else{print "1"}}'awk 'BEGIN{str = "One two three four five"; wrd = "One"; ptrn = "/^"wrd"/"; if(str ~ ptrn){print "0"}else{print "1"}}'awk 'BEGIN{str = "One two three four five"; wrd = "One"; ptrn = "/^"wrd"/"; if(match(str, ptrn)){print "0"}else{print "1"}}'

Пользователь добавил сообщение 20 Сентября 2016, 01:21:54:
нашел:
awk 'BEGIN{str = "One two three four five"; wrd = "One"; if(str ~ "^" wrd){print "0"}else{print "1"}}'
« Последнее редактирование: 20 Сентября 2016, 01:21:54 от renzrv »

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: awk: подстановка переменной в регексп
« Ответ #1 : 20 Сентября 2016, 14:00:16 »
Ещё
Код: (awk) [Выделить]
if(index(str, wrd) == 1)или match(). Но почему awk???
Код: (bash) [Выделить]
[[ "One two three four five" == One* ]] && echo match || echo No match
Код: (bash) [Выделить]
[ "${str::${#wrd}}" == "${wrd}" ] && echo match || echo No match
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

Страница сгенерирована за 0.019 секунд. Запросов: 22.