Bash 스크립트를 사용하여 로그 파일의 같은 줄에 나타나는 여러 키워드를 일치시키는 방법

Bash 스크립트를 사용하여 로그 파일의 같은 줄에 나타나는 여러 키워드를 일치시키는 방법

로그 파일에서 일치시킬 키워드가 포함된 배열을 만들고 일치하는 행을 stdout에 표시했습니다. 한 줄에 여러 개의 키워드가 포함되어 있으면 한 줄에 있는 모든 키워드가 강조 표시되도록 출력하고 싶습니다. 현재는 일치하는 색상 하나만 색칠합니다. 두 개의 키워드가 같은 줄에 있으면 하나만 색상이 지정됩니다. 출력은 현재 표준 출력에 나타나야 합니다.

현재 샘플 출력. 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

관련 정보