Bashスクリプトを使用してログファイルの同じ行に表示される複数のキーワードを一致させる方法

Bashスクリプトを使用してログファイルの同じ行に表示される複数のキーワードを一致させる方法

ログファイルで一致させるキーワードを含む配列を作成し、一致する行を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"

おすすめ記事