Regex go Wrong

Я использую скрипт Bash для использования awk для поиска: (0010,0080) Обычно awk ищет любое числовое значение, разделенное запятой между скобками. Я сделал все, что мог придумать и до сих пор не могу получить ЛЮБЫЕ результаты, когда добавляю его в текстовый файл). Мое регулярное выражение:

awk '/\([0-9]{4},[0-9]{4}\)/' dcmResults.txt >> ~/export/"$1"/tagResults.txt

Я сделал почти все варианты использования escape-символа для круглых скобок, в том числе не используя никаких, и я получаю NO-результаты при добавлении к текстовому файлу. Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно?

UPDATE, вот как выглядит весь сценарий:

 #!/bin/bash echo "Enter SUID: " read uid echo "Enter Tag Number: " read dicomTag dicomDump() { arg1=$1 cd ~/export/"$1" dcmdump *.dcm > ~/export/"$1"/dcmResults.txt } tagFinder() { arg1=$1 arg2=$2 for i in $(cat ~/export/"$1"/dcmResults.txt); do grep "$2" | awk '/[0-9]{4},[0-9]{4}.*/' dcmResults.txt >> ~/export/"$1"/tagResults.txt break done; } dicomDump "$uid" tagFinder "$uid" "$dicomTag" 

2 Solutions collect form web for “Regex go Wrong”

Gnu Awk запускается только с интервальными выражениями (ваш {4} квалифицирующий [0-9] ) в 4.0:

Интервальные выражения не были традиционно доступны в awk. Они были добавлены как часть стандарта POSIX, чтобы сделать awk и egrep согласованными друг с другом.

Первоначально, поскольку старые программы могут использовать '{' и '}' в константах регулярного выражения, gawk не соответствовал выражениям интервала в регулярных выражениях.

Однако, начиная с версии 4.0, gawk по умолчанию соответствует выражениям интервала. Это связано с тем, что совместимость с POSIX стала более важной для большинства пользователей Gawk, чем совместимость со старыми программами.

Для программ, которые используют '{' и '}' в константах регулярного выражения, хорошая практика всегда избегать их с помощью обратной косой черты. Тогда константы регулярного выражения действительны и работают так, как вы хотите, используя любую версию awk.17

См. Руководство пользователя .

Эта линия поражает меня двумя проблемами:

 grep "$2" | awk '/[0-9]{4},[0-9]{4}.*/' dcmResults.txt >> ~/export/"$1"/tagResults.txt 
  1. Вы можете сделать все это в grep :

     grep -e "$2" -e '([0-9]\{4\},[0-9]\{4\})' dcmResults.txt >> ~/export/"$1"/tagResults.txt 
  2. Где grep получает свой вклад, и где идет выход grep ? Поскольку awk имеет имя файла для ввода, он игнорирует стандартный ввод.
  • Как найти минимальный столбец в каждом n-м интервале файла, используя sed, sort, tail?
  • Как добавить добавочный счет в каждую строку текстового файла?
  • Как напечатать собственное имя скрипта в mawk?
  • Замена одной тестовой строки на другую в определенном столбце
  • замените n-й столбец csv-файла с помощью таблицы поиска
  • Фиксация заголовка и печати
  • Показать весь файл до матча
  • Найти и перенаправить для получения имени файла шаблона
  • Как разбирать JSON с помощью сценариев оболочки в Linux?
  • Как получить строку X из строки file1 и Y из файла2 с помощью команды оболочки?
  • замените символ из строки, которая находится между первым и вторым поиском, используя sed или awk
  • Interesting Posts

    Несколько проблем с настройкой Windows 10 и Ubuntu 14.04.03 с двойной загрузкой

    Сделать файлы в директории, не видимой никому

    Как читать входной файл и действовать в каждой строке

    Как экспортировать / импортировать цветовую схему терминала Ubuntu 16.04

    Аутентификация ключа SSH с несколькими компьютерами

    Как преобразовать общий формат XML-формата в формат свойств String из XML-файла с помощью скрипта ksh

    OpenLDAP как только кеш-прокси, ни одна локальная база данных

    ZFS: отправка / получение со скользящими моментальными снимками

    Инструменты tslib ничего не рисуют на экране

    Как найти, какое приложение создает конкретный файл в пути?

    Процессы Dmenu, выпущенные Bash?

    cd в дочерний каталог символической ссылки не выполняется

    vim: можно открыть зашифрованный файл с помощью cli?

    Openoffice Calc не расширяет формулу на ячейках

    Контрольная подсветка как пользователь (без xbacklight)

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