批处理:使用正则表达式将管道输出中的匹配行返回到控制台

批处理:使用正则表达式将管道输出中的匹配行返回到控制台

我在 Linux 中有以下域检查 bash 脚本:

#!/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,但现在它返回包含RegistrantName单词的每一行。

答案1

FINDSTR /I /C:"Registrant Name"

应用下一段来自查找字符串文章:

搜索空间

当搜索字符串包含多个单词(以空格分隔)时,FINDSTR将返回包含单词(或者)。
文字搜索 ( /C:"string") 将反转此行为并允许搜索短语或句子。文字搜索还允许搜索标点符号。

请阅读 Dave Benham 的下一篇综合文章:FINDSTR 未记录的功能和限制列表

相关内容