Stapel: Bringen Sie die übereinstimmenden Zeilen von der Pipe-Ausgabe mit Regex zur Konsole zurück

1178
Lanti

Ich habe das folgende Domain-bash-Skript in 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' 

Ich versuche, dies in Windows neu zu schreiben:

@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 ) 

Ich brauche Hilfe bei Regex. Ich möchte nur die einzige Zeile finden, die enthält Registrant Name, aber jetzt wird jede Zeile zurückgegeben, die sowohl Wörter Registrantals auch NameWörter enthält.

1
`FINDSTR / I / C:" Registrant Name "` [Zeichenfolge als Literal-Suchzeichenfolge verwenden (kann Leerzeichen enthalten)] (http://ss64.com/nt/findstr.html). JosefZ vor 8 Jahren 1

1 Antwort auf die Frage

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

Angewendeter nächster Absatz von findstr artice:

Nach Räumen suchen

Wenn die Suchzeichenfolge mehrere durch Leerzeichen getrennte Wörter enthält, FINDSTRwerden Zeilen mit einem der beiden Wörter ( ODER ) zurückgegeben.
Eine wörtliche Suche ( /C:"string") wird dieses Verhalten umkehren und die Suche nach einem Satz oder Satz ermöglichen. Eine Literal-Suche ermöglicht auch die Suche nach Interpunktionszeichen.

Lesen Sie auch den umfassenden Artikel von Dave Benham: Liste der nicht dokumentierten Funktionen und Einschränkungen von FINDSTR .