、2例は、これはあなたが編集を探している1、あなたの質問がない場合は、1でコントローラの設定1を検索し、明らかに私たちをブリーフィングするために使用することができ下回ります。
どちらか
# which will print and exit
# search for controller-name, increment variable
# print contents and exit
awk -v controller=1 '
f && /^---/{exit}
/^controller-name/{c++}
f=c==controller
' infile
それとも
# which will save inside array
# used --- as row separator
# whenever controller-name awk finds, that line is saved in array
# in end block access it by a[0], a[1]....
awk -v RS='---' '
/controller-name:/{
gsub(/^\n|\n$/,"");
a[c++]=$0
}
END{
print a[0]
}
' infile
試験結果:
入力:
$ cat infile
---
controller-name: RAID-1
host-power: on
has-error: No
info-valid: Yes
controller-health: Good
---
controller-name: RAID-2
host-power: on
has-error: No
info-valid: Yes
controller-health: Bad
...
出力-1:
$ awk -v controller=1 'f && /^---/{exit}/^controller-name/{c++}f=c==controller' infile
controller-name: RAID-1
host-power: on
has-error: No
info-valid: Yes
controller-health: Good
$ awk -v controller=2 'f && /^---/{exit}/^controller-name/{c++}f=c==controller' infile
controller-name: RAID-2
host-power: on
has-error: No
info-valid: Yes
controller-health: Bad
...
出力-2:
$ awk -v RS='---' '/controller-name:/{gsub(/^\n|\n$/,"");a[c++]=$0}END{print a[0]}' infile
controller-name: RAID-1
host-power: on
has-error: No
info-valid: Yes
controller-health: Good
$ awk -v RS='---' '/controller-name:/{gsub(/^\n|\n$/,"");a[c++]=$0}END{print a[1]}' infile
controller-name: RAID-2
host-power: on
has-error: No
info-valid: Yes
controller-health: Bad
...
最終予想される結果を投稿してください。 './script controller 0'を要求するとき、どのように出力を見るべきでしょうか?私は以下のように各コントローラについては、以下のような出力を抽出したい – RomanPerekhrest