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

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

looktype="123" 

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

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

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

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

  • Как печатать пустые места в первом столбце с помощью awk или sed
  • Выбор строк со значением в столбце
  • Grep для дат старше 14 дней в файле
  • Проверка формата имени файла в оболочке linux
  • Почему поля, не разделенные пробелом на выходе этого примера?
  • Как добавить новый текст после каждой строки с использованием команды оболочки?
  • Как присоединиться к двум файлам, сопоставляя столбцы с неправильным количеством столбцов?
  • Каковы альтернативные инструменты для поиска файлов в полном объеме?
  • 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.

    Interesting Posts

    Использование inotifywait вместе с vim

    Нужно ли мне поддерживать сеанс SSH для запуска cron?

    Печатать коннективные символы Юникода, используя одно нажатие клавиши

    Исторические данные о пропускной способности в консоли? (статистика сохранения / загрузки)

    Можно ли использовать несколько здесь-документов в bash?

    Как получить доступ к экрану, созданному другими пользователями?

    Различные версии одного и того же lib нарушили мой менеджер пакетов

    Извлечь даты из / etc / shadow

    Используйте некоторый загрузчик EFI для загрузки MBR

    Как удалить (1) из имен файлов с помощью команды find

    Как я могу получить доступ к удаленному открытому файлу в Linux (вывод запущенной задачи crontab)?

    firefox -private иногда открывает не-личное окно

    Как удалить слово, следующее из последней косой черты

    Текстовый файл занят при копировании некоторых файлов

    Шаблон соответствия \\\ ", используя grep

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