Альтернативное регулярное выражение для {}

Я пытаюсь заменить всю эту строку, но числа:

looktype="123" 

поэтому появляются только цифры.

Возможно ли это любым простым способом?

 {sub ("look type=\"[0-9]{0,3}", "TEST")} 

Я пытаюсь это с awk , безрезультатно. Я считаю, что «sub» и {0, 3} мешают.

  • Преобразование отформатированных дат в секундах с эпохи
  • Удалить пустой раздел конфигурации
  • Как удалить апостроф (') из нескольких столбцов файла .CSV?
  • Импульсные данные по мажоритарной стоимости на группу
  • Эффективный способ сравнения в awk
  • Сохраните AWK FNR как переменную Bash, чтобы продолжить поиск из строки
  • awk помещает последний столбец в новую строку
  • Поместите большие данные гетерогенного байтового смещения в массивы AWK
  • 4 Solutions collect form web for “Альтернативное регулярное выражение для {}”

    Вы можете передать его через sed чтобы извлечь только то, что находится внутри символов кавычек.

    например

     $ echo 'looktype="123"' | sed -r -e 's/^.*"([^"]+)".*/\1/' 123 

    Обратите внимание, что -r специфичен для GNU sed, он говорит sed использовать расширенные, а не базовые регулярные выражения. Другие версии sed не имеют его или вместо него могут использовать -E . В противном случае напишите его в основном регулярном выражении POSIX (BRE) следующим образом:

     sed -e 's/^.*"\([^"][^"]*\)".*/\1/' 

    В расширенных регулярных выражениях (ERE) X { m , n } означает, что X повторяется между m и n раз. Awk реализует расширенные регулярные выражения, однако в исторических реализациях awk не было такого синтаксиса привязки для интервалов повторения. Стандарт POSIX указывает, что awk должен поддерживать ERE, но многие существующие реализации несовместимы.

    С GNU awk интервалы поддерживаются только с версии 4.0. В более старых версиях вы можете заставить gawk быть совместимым с POSIX, установив переменную среды POSIXLY_CORRECT в непустое значение:

     POSIXLY_CORRECT=1 awk '{sub ("looktype=\"[0-9]{0,3}", "TEST"); print}' 

    Версия awk по умолчанию для некоторых дистрибутивов – это не gawk, а mawk, который меньше и быстрее. Mawk не поддерживает выражения скобок. Для этого есть патч , но поскольку mawk не поддерживается, он не принят широко.

    Когда количество повторений невелико, вы можете указать:

     awk '{sub ("looktype=\"[0-9]?[0-9]?[0-9]?[0-9]?", "TEST"); print}' 

    В awk (при условии ввода точного ввода вы также можете сделать это:

     awk -F'=' '{print $2}' | sed 's/"//g' 

    Альтернатива в GNU grep (который, как я полагаю, имеет из-за тега Ubuntu):

     grep -o '[0-9]\+' your_file 

    Еще более портативная альтернатива Perl

     perl -nle '/([0-9]+)/ and print $1' your_file 

    Эти две альтернативы не совсем одинаковы. Они ведут себя по-разному, если у вас несколько экземпляров строки цифр в одной строке. Команда grep будет печатать каждое вхождение цифр в отдельной строке, в то время как оператор perl будет печатать только самое левое вхождение строки цифр в каждой строке. Это связано с различием во внутренней реализации механизма регулярных выражений между grep и Perl.

    Linux и Unix - лучшая ОС в мире.