Com base nos requisitos supostos dos comentários, você precisa de algo como abaixo
#!/usr/bin/env bash
token=()
while IFS= read -r line; do
printf '%s\n' "$line"
token+=( "${line##*/}" )
done< <(awk '$0 ~ "http://0.0.0.0:3468/"' /opt/plex/*.log)
Isso imprimirá todas as linhas correspondentes contendo o URL para o console. Em vez de usar uma variável para armazenar a saída do token, você pode usar uma matriz em bash
para anexar o conteúdo após /
usando a sintaxe de expansão de parâmetro do tipo ${word##*}
, que remove a cadeia até a última ocorrência de /
e imprime a seqüência restante. Então, quando o script estiver concluído, você poderá imprimir a lista de tokens como apenas
printf '%s\n' "${token[@]}"
e acessar o token individual fazendo um loop pela matriz
for ((i=0; i< ${#token[@]}; i++ )); do
printf '%s\n' "${token[i]}"
done
(ou) como apenas usando índices de array ${token[0]}
, ${token[1]}
etc.
Se sua necessidade se resume a obter um único valor de string do conjunto de arquivos, use apenas grep
ou Awk
como
token=$(awk -vFS=/ '$0 ~ "http://0.0.0.0:3468/"{print $NF}' /opt/plex_autoscan/*.log)
(ou) com GNU grep
como
token=$(grep -oP 'http://0.0.0.0:3468/\K.*) /opt/plex_autoscan/*.log