私の出力のいくつかは次のとおりです。
Gathering data for drive 1 ...
Drive name: id1,sd@n5000cca17096
Drive Model: HUH721010AL4204
Drive Speed: 7200 RPMs
Drive Temp: 41 C
Gathering data for drive 2 ...
Drive name: id1,sd@n5000cca24156
Drive Model: HUH721010AL4204
Drive Speed: 7200 RPMs
Drive Temp: 41 C
Gathering data for drive 3 ...
Drive name: id1,sd@n5000cca8749
Drive Model: HUH721010AL4204
failed to get drive stats
Gathering data for drive 4 ...
Drive name: id1,sd@n5000cca19183
Drive Model: HUH721010AL4204
Drive Speed: 7200 RPMs
Drive Temp: 41 C
Gathering data for drive 5 ...
Drive name: id1,sd@n5000cca4607
Drive Model: HUSMH8010BSS204
failed to get drive stats
Gathering data for drive 6 ...
Drive name: id1,sd@n5000cca10152
Drive Model: HUH721010AL4204
Drive Speed: 7200 RPMs
Drive Temp: 41 C
ドライブ統計を返すことができない(したがって一致する)すべてのドライブの「ドライブ名」を印刷したいと思いますfailed to get drive stats
。
前の行を取得する方法を知っています。
awk '$0=="failed to get drive stats" && $2>1 {print f} {f=$0}'
しかし、これは私には役に立ちません。
希望の出力:
Drive name: id1,sd@n5000cca8749
Drive name: id1,sd@n5000cca4607
編集する:
何らかの理由で出力がリダイレクトされると、端末と同じ方法で表示されません。私が実行した場合:
command >out.txt 2>&1
出力ファイルは次のとおりです。
failed to get drive stats
failed to get drive stats
Gathering data for drive 1 ...
Drive name: id1,sd@n5000cca17096
Drive Model: HUH721010AL4204
Drive Speed: 7200 RPMs
Drive Temp: 41 C
Gathering data for drive 2 ...
Drive name: id1,sd@n5000cca24156
Drive Model: HUH721010AL4204
Drive Speed: 7200 RPMs
Drive Temp: 41 C
....
どちらのawk回答も仕事を提供しましたが、他に質問があるようです。
ベストアンサー1
$ awk -F ':' '$1 == "Drive name" { saved = $0 } $0 == "failed to get drive stats" { print saved }' file
Drive name: id1,sd@n5000cca8749
Drive name: id1,sd@n5000cca4607
まず、入力フィールド区切り記号をに設定します:
。次に、saved
ドライブ名を指定する行が見つかるたびに、その行を変数に保存します。
行が表示されると、failed to get drive stats
現在の値が印刷されます。saved