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" 

  • предпочтения разделителя awk
  • Как получить строку X из строки file1 и Y из файла2 с помощью команды оболочки?
  • Не удалось отменить регистрацию vms
  • Замена совпадающего текста после двух совпадающих строк
  • Печать выборочных полей после инструкций 1-го столбца
  • Сценарий Bash для суммирования «last -a»
  • Удалите повторяющиеся строки из файла, содержащего временную метку
  • Печать диапазона файлов на основе временного диапазона с помощью awk?
  • 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 имеет имя файла для ввода, он игнорирует стандартный ввод.
    Linux и Unix - лучшая ОС в мире.