私は単語を検索しなければならないファイルがあり、単語が見つかったらそのレコードを私の出力に残す必要があります。
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