파일에서 단어를 Grep하고 뒤로 패턴을 검색합니다.

파일에서 단어를 Grep하고 뒤로 패턴을 검색합니다.

나는 단어를 검색해야 하는 파일이 있고, 일단 단어가 발견되면 그 기록을 내 출력에 유지해야 하며, 아래 예시와 같이 해당 기록에서 돌아가서 이전 기록을 가져와야 합니다.

insert_job: Capture this record as well   job_type: FW
box_name:XXXXXXXXXXXXXXX
machine: XXXXXXXXXXXXXXX
owner: XXXXXXXXXXXXXXXXXXXXX
permission:
date_conditions: 0
description: "This job waits for .trg file of CRH load file. This job waits for 2 hrs and alarms Ops."
term_run_time: 121
box_terminator: 1
max_run_alarm: 120
alarm_if_fail: 1
profile: "XXXXXXXXXXXXX"
timezone: CentralTime
watch_file: "XXXXXXXXXXXXXXXXXXXXXXXXXX"
watch_interval: 30

위의 jil에서 watch_file 키워드를 찾으면 돌아가서 insert_job 섹션에서 작업 이름을 캡처해야 합니다. 내 파일에 출력 파일을 찾아 써야 하는 여러 개의 jil이 있습니다.

답변1

사용 awk:

키워드가 포함된 전체 줄을 캡처하려면 다음을 수행하세요.

 awk  '/^insert_job|^watch_file/' file

이 작업은 다음을 통해 수행할 수도 있습니다 grep.

grep -E '^insert_job|^watch_file' file

insert_job:키워드 와 그 뒤의 필드 만 캡처하려면 watch_file:옵션을 사용하여 -F필드 구분자를 설정하세요.

awk -F'[^ ]*: *' '/^insert_job/{a=$2}/^watch_file/{print a, $2}' file

관련 정보