У меня есть несколько документов, размещенных на экземпляре облака. Я хочу извлечь все слова, соответствующие определенному шаблону, в файл .txt
. Это шаблон:Использование grep для определения шаблона
ABC123A
ABC123B
ABC765A
и так один. По сути слова начинаются с определенной строки символов «ABC», имеют фиксированное число цифр и заканчиваются буквой. Это мой код:
grep -oh ABC[0-9].*[a-zA-Z]$ > /home/user/abcLetterMatches.txt
Когда я выполняю запрос, он работает в течение нескольких часов, не генерируя никакого вывода. У меня более 1100 документов. Однако, когда я запускаю этот запрос:
grep -r ABC[0-9].*[a-zA-Z]$ > /home/user/abcLetterMatches.txt
Список файлов со строками создается за считанные секунды.
Что мне нужно для корректировки в моем запросе? Кроме того, что вызывает задержку?
UPDATE 1
Исходя из ответов, это очевидно, что команда отсутствует имя файла, на котором она должна быть выполнена. Я хочу запустить код в нескольких файлах документа (> 1000)
Документы, которые я хочу найти, находятся в нескольких подкаталогах внутри каталога. Каков хороший способ их поиска? Выполнение
grep -roh ABC[0-9].*[a-zA-Z]$ > /home/user/abcLetterMatches.txt
только возвращает имена файлов.
UPDATE 2
Если я использую обновленный код из ответа ниже:
find . -exec grep -oh "ABC[0-9].*[a-zA-Z]$" >> ~/abcLetterMatches.txt {} \;
Я получаю no file or directory
ошибку
UPDATE 3
Шаблон может быть в любом месте линия.
* * работает в течение нескольких часов без генерации какого-либо выхода * 'Это потому, что он ждет ввода. Вы не сказали 'grep' * where * посмотреть, поэтому он читает STDIN. Вы захотите сделать 'grep'. –
Biffen
Ваш шаблон будет соответствовать тем, которые не похожи на ваши примеры, например. 'ABC1fooA'. Ваш шаблон просто требует одной цифры после 'ABC', затем ничего. – Barmar
Ваш шаблон будет извлекать 'ABC123A' из шаблонов, таких как' 356XYZABC123A'. Это предназначено? – alvits