미리 지정된 문자열 목록을 받습니다. 여러 텍스트 파일(아래 예)에서 목록에 있는 문자열 중 하나로 시작하지 않는 문자열을 검색하고 싶습니다. 때로는 텍스트 파일에 빈 링크가 나타나는 경우가 있습니다. 내 코드에서는 해당 링크를 찾았지만 나도 원하지 않습니다.
지금까지 내 스크립트는 다음과 같습니다.
# The list of strings I receive
ENTRY_LIST="ACK AFF AUTH CON DIS EDITOR FUND JEL MISC PHD REF SEM TITLE VIS"
# I transform blanks to | in order to use egrep on in
TRANSFORMED_ENTRY_LIST=${ENTRY_LIST// /\|}
egrep -rvn ^"($TRANSFORMED_ENTRY_LIST):"
샘플 데이터는 다음과 같습니다.
TITLE: xxxx
AUTH: yyy
FUND: ZZZ
TITLE: BERLIN
AUTH: STUTTGART
AFF: WIEN
ACK: KIEL
CNO: HAMBURG
SEM: BRESLAU
FUND: DANZIG
해당 줄 CNO: HAMBURG
은 잘못되었지만 내 코드에는 4번 줄도 표시됩니다.
답변1
|^$
정규식 끝에 다음을 추가하세요 .
egrep -rvn "^($TRANSFORMED_ENTRY_LIST):|^\$"
그러면 입력에서 빈 줄이 거부됩니다.