Usando sed com uma string
Você identificou corretamente o problema: $reg
é uma string, não um arquivo. Assim, você precisa fornecer a string para sed
como stdin. Substitua:
reg1=$(sed /^Domain/d $reg)
com (para bash):
reg1=$(sed /^Domain/d <<<"$reg")
Ou, para um shell POSIX geral, use:
reg1=$(echo "$reg" | sed /^Domain/d)
Simplificação: combinando os comandos grep e sed em um comando
Os comandos grep e dois sed podem ser combinados em um comando sed:
#!/bin/bash
cyan='3[0;34m'
white='3[1;37m'
purple='3[38;5;129m'
NC='3[0m'
reg=$(whois yahoo.com | sed -En '/^[[:space:]]*Domain/d; /: / s/^[[:blank:]]+//p')
printf "${cyan}Below is my best attempt at finding Registrar data:\n"
printf "${white}$reg${NC}\n${purple}Made by Noah Yamamoto${NC}\n"