提供される文書:
$ cat CronConfig
`FILE SYSTEM`
`------------`
warningThreshold: 77
criticalThreshold: 99
`MEMORY`
`-------`
warningThreshold: 66
criticalThreshold: 88
`CPU`
`----`
intervalCount: 6
intervalSecs: 7
warningThreshold: 99
criticalThreshold: 88
CronConfig
上記の内容を含むファイルがあります。私は値を使用し、warningThreshold
次のような出力が必要です。MEMORY
criticalThreshold
CPU
66
88
この値を取得するには、コマンドを使用します。 (しかし、正しい方法でやっているかどうかはわかりません。)
awk 'BEGIN{FS="\n"; RS="------------"} {print $7}' CronConfig | awk 'NF {print $2}'
awk 'BEGIN{FS="\n"; RS="------------"} {print $15}' CronConfig | awk 'NF {print $2}'
ベストアンサー1
sed
複数行を置き換えることでこれを行うことができます。
要するに
$ sed -n '/`MEMORY`/,/^$/{s/^warningThreshold: \([0-9]*\)/\1/p};
/`CPU`/,/^$/{s/^criticalThreshold: \([0-9]*\)/\1/p}' CronConfig
より多くの説明があります:
sed -n
ファイル全体を印刷しないでください。
検索するブロックを選択するには
/PATTERN1/,/PATTERN2/
ここで、PATTERN1とPATTERN2はブロック制限です。あなたの場合、MEMORY
最初のブロックと2番目のブロックにendを使用できます。^$
CPU
^$
次に、warningThresholtまたはimportantThresholdを含む行を次の数字に置き換えます。s
これを行うにはsedコマンドを使用します。最後のsコマンドp
は結果をエコーするために使用されます。