로그 파일에서 일치시킬 키워드가 포함된 배열을 만들고 일치하는 행을 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