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