Пакетная обработка: вернуть соответствующие строки из вывода канала в консоль с помощью регулярного выражения

1002
Lanti

У меня есть следующий скрипт проверки домена в Linux:

#!/bin/bash  TLD='.com'  while read -r domain; do whois -H $domain$TLD | grep -oPaq '^.*(Creation Date|record created).*$' if [ $? -eq 0 ]; then echo $domain$TLD | tee --append 'files/registered.txt' else echo $domain$TLD | tee --append 'files/available.txt' fi done < 'files/domains.txt' 

Я пытаюсь переписать это в Windows:

@ECHO OFF  SET "TLD=.com"  FOR /F "tokens=*" %%i in (%cd%\files\domains-win.txt) do ( whoiscl -r -n %%i%TLD% | FINDSTR /R /I "\^.*Registrant Name.*$" 2>&1 ) 

Мне нужна помощь в регулярных выражениях. Я просто хочу сопоставить единственную строку, которая содержит Registrant Name, но теперь он возвращает каждую строку, которая содержит Registrantи Nameслова, и слова.

1
`FINDSTR / I / C:" Имя регистранта "` [Использовать строку в качестве строки литерального поиска (может содержать пробелы)] (http://ss64.com/nt/findstr.html). JosefZ 7 лет назад 1

1 ответ на вопрос

2
JosefZ
FINDSTR /I /C:"Registrant Name" 

Применяется следующий абзац от findstr artice:

В поисках пространства

Если строка поиска содержит несколько слов, разделенных пробелами, тогда FINDSTRбудут возвращены строки, содержащие любое слово ( ИЛИ ).
Литеральный поиск ( /C:"string") полностью изменяет это поведение и позволяет искать фразу или предложение. Литеральный поиск также позволяет искать знаки препинания.

Прочитайте следующую обширную статью Дэйва Бенхэма : список недокументированных функций и ограничений FINDSTR .