ログファイルで一致させるキーワードを含む配列を作成し、一致する行をstdoutに表示しました。 1行に複数のキーワードが含まれている場合は、1行のすべてのキーワードを強調表示するように出力したいと思います。現時点では、一致する色の1つだけを着色します。 2 つのキーワードが同じ行にある場合は、1 つだけ色が付けられます。出力は現在の標準出力に表示する必要があります。
現在のサンプル出力。E:
キーワードには色はありませんUnable
。
第二:できないパッケージドッカーを探す
#!/bin/bash
search_keywords=("ERROR" "Err" "E:" "W:" "Couldn't" "cleanly" "error" "unable" "failed" "fatal")
log_file="/home/user/example.log"
for keyword in "${search_keywords[@]}"
do
grep -n --color "$keyword" $log_file
done
答え1
@balkiが説明した例に従ってください。
#! /usr/bin/env bash
search_keywords=( "ERROR" "Err" "E:" "W:" "Couldn't" "cleanly" "error" "unable" "failed" "fatal" )
data="E: Unable to locate package docker"
declare -a flags
for keyword in "${search_keywords[@]}"; do
flags+=( -e $keyword )
done
grep -i --color=always "${flags[@]}" <<< "$data"
答え2
確認-e
または-f
選択人々はgrep
❯ cat > /tmp/logfile <<EOM
E: Unable to locate package docker
EOM
❯ grep -i --color -f - /tmp/logfile <<EOM
ERROR
Err
E:
W:
Couldn't
cleanly
error
unable
failed
fatal
EOM
強調表示されてE:
います。Unable
E: Unable to locate package docker
使用-e
、
❯ grep --color -e 'E:' -e 'unable' -i /tmp/logfile
E: Unable to locate package docker