http://0.0.0.0:3468/*
나는 많은 로그를 살펴보고 /opt/plex/*.log
이를 사용자 터미널에 표시하고 변수에 추가해야 하는 bash 스크립트를 만들려고 합니다 .
어떻게 해야 하나요?
예: http://0.0.0.0:3468/abc
터미널에 인쇄하고 스크립트에 이름이 지정된 변수를 만듭니다 TOKEN=abc
.
답변1
기반으로~해야 한다의견에서 요청한대로 아래와 같은 것이 필요합니다.
#!/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)
그러면 URL이 포함된 일치하는 모든 줄이 콘솔에 인쇄됩니다. 변수를 사용하여 토큰 출력을 저장하는 대신, 배열을 사용하여 형식의 인수 확장 구문을 사용하여 내용을 추가할 수 있습니다. 그러면 bash
마지막 항목까지 문자열을 제거하고 나머지 문자열을 인쇄합니다. 따라서 스크립트가 완료되면 토큰 목록을 인쇄할 수 있습니다./
${word##*}
/
printf '%s\n' "${token[@]}"
배열을 반복하여 개별 토큰에 액세스합니다.
for ((i=0; i< ${#token[@]}; i++ )); do
printf '%s\n' "${token[i]}"
done
(또는) 배열 인덱싱 ${token[0]}
등을 사용하십시오.${token[1]}
요구 사항이 여러 파일 세트에서 단일 문자열 값을 얻는 것으로 요약되는 경우 grep
또는 Awk
as를 사용하십시오.
token=$(awk -vFS=/ '$0 ~ "http://0.0.0.0:3468/"{print $NF}' /opt/plex_autoscan/*.log)
(또는) 다음과 GNU grep
같이
token=$(grep -oP 'http://0.0.0.0:3468/\K.*) /opt/plex_autoscan/*.log