1 votes

Lot : Renvoyer les lignes correspondantes de la sortie de pipe à la console avec regex

J'ai le domaine suivant vérifiant bash script sous 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'

J'essaie de réécrire ceci en 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
)

J'ai besoin d'aide en matière de regex. Je veux juste faire correspondre la seule ligne qui contient Registrant Name mais maintenant, il renvoie toutes les lignes qui contiennent les deux éléments suivants Registrant y Name mots.

2voto

JosefZ Points 11907
FINDSTR /I /C:"Registrant Name"

Appliqué le paragraphe suivant de findtr artice :

Recherche d'espaces

Lorsque la chaîne de recherche contient plusieurs mots, séparés par des espaces, alors FINDSTR retournera les lignes qui contiennent soit un mot ( OU ).
Une recherche littérale ( /C:"string" ) inversera ce comportement et permet de rechercher une expression ou une phrase. Une recherche littérale permet également de rechercher des caractères de ponctuation.

Lisez également l'article complet de Dave Benham : Liste des fonctionnalités non documentées et des limitations de FINDSTR .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X