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" 

  • Как разбить файл, чередуя префикс, используемый для выходных файлов?
  • объединить файлы csv, сохранить запятую внутри кавычек
  • Использование awk для обработки вывода ls с пробелами в именах файлов / пути
  • Удалить диапазон строк над шаблоном с помощью sed (или awk)
  • Удалите n-ю строку из сопоставленной строки (которая встречается только один раз в файле)
  • awk попарные разности
  • Использование 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 имеет имя файла для ввода, он игнорирует стандартный ввод.
    Interesting Posts

    Как сгенерировать действительный и случайный MAC-адрес?

    CUPS, как обеспечить печать B & W для очереди?

    Как присоединиться к следующей строке, когда строка соответствует регулярному выражению для всего документа в VI?

    Управление вентилятором на Lenovo Thinkpad Edge S430 и Ubuntu 13.04

    Установка программного обеспечения с установщиком пакета GUI с использованием разрешения sudo

    как уловить приостановку резюме из сценария bash

    Использование команды sed преобразует только первый символ в определенную строку с прописными буквами

    Перенаправление портов IPTables должно быть сломанным Apache, но не было

    Как выбрать сообщения в mutt на основе использования набора символов?

    Как избежать сломанной трубы в командах с кошкой?

    Как загрузить все изображения с веб-сайта (а не веб-страницы) с помощью терминала?

    Как я могу наблюдать за созданием определенного «триггерного файла»?

    Возвращать длинное целочисленное значение из функции в ksh

    Logrotate: «log не нужно вращать» почему?

    Как создать DVD из сетевого репозитория

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