Se o mesmo retorna algo como:

10.0.0.1 (10.0.0.1) at 24:fd:d:15:d8:91 on en0 ifscope [ethernet]
10.0.0.104 (10.0.0.104) at be:f3:5:d4:13:c0 on en0 ifscope [ethernet]

E você precisa somente do IP, o certo é verificar se cada linha retornada é uma string. Se sim, poderia fazer:


const unsanitizedIps[] = shell.exec('arp -a')
const sanitizedIps = []

for(let i = 0; i<ips.length;i++) {
   sanitizedIps.push(unsanitizedIps[i].split('(')[0].trim())
   // linha: 10.0.0.1 (10.0.0.1) at 25:ad:d:12:d2:11 on en0 ifscope [ethernet] 
   // saida: 10.0.0.1
   // Obs.: o split pode ser feito no espaço em branco também. ".split(' ')"
}  

Edit: Se entendi certo, é isso ai.

Boa, é isso mesmo, mas o que significa,

    '(')[0].trim()

? Eu tentei usar o \t pra tentar separar mas nao deu certo. Obrigado pela ajuda!

O **trim()** serve para remover espaços em brancos que ficam nas extremidades. Segue link com uma explicação completa. [trim()](https://www.w3schools.com/jsref/jsref_trim_string.asp)