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