Batch: Retorna as linhas correspondentes da saída do pipe para o console com regex

1

Eu tenho o seguinte script bash de verificação de domínio no 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'

Eu tento reescrever isso para o 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
)

Preciso de ajuda na regex. Eu só quero corresponder a única linha que contém Registrant Name , mas agora ele está retornando todas as linhas que contêm Registrant e Name palavras.

    
por Lanti 23.05.2016 / 13:03

1 resposta

2
FINDSTR /I /C:"Registrant Name"

Aplicado no próximo parágrafo de findstr artice:

Searching for Spaces

When the search string contains multiple words, separated with spaces, then FINDSTR will return lines that contain either word (OR).
A literal search (/C:"string") will reverse this behaviour and allow searching for a phrase or sentence. A literal search also allow searching for punctuation characters.

Leia o próximo artigo abrangente de Dave Benham: Lista de recursos não documentados e limitações do FINDSTR .

    
por 24.05.2016 / 13:58