sed\awkを使用してファイル内の特定の行を検索し、他のパターンに一致するすべての後続の行を一致させるにはどうすればよいですか?

sed\awkを使用してファイル内の特定の行を検索し、他のパターンに一致するすべての後続の行を一致させるにはどうすればよいですか?

私は同様のトピックを見つけましたが、それを直接使用するために実装する方法がわかりません。

ターゲット行を一致させた後、複数の行を取得します。

問題はこれである:

私のプロジェクトでこれを実装しようとしていますが、うまく動作しないようです。私はLinuxを使用しています。誰でもハックできますか?

基本的に私が望むのは、ログバンドルを繰り返し、特定の行とそのスタック\詳細情報をキャプチャすることです。例は次のとおりです。

2020-01-20T05:58:19.119Z verbose vpxa[6E21B70] [Originator@6876 sub=PropertyProvider opID=k5cokp1a-928316-auto-jwal-h5:70047736-92-01-84] [CommitChangesAndNotify] Updating cached values
2020-01-20T05:58:19.119Z info vpxa[6E21B70] [Originator@6876 sub=Default opID=k5cokp1a-928316-auto-jwal-h5:70047736-92-01-84] [VpxLRO] -- ERROR task-107599 -- **vm-1178** -- vim.VirtualMachine.reconfigure: vmodl.fault.InvalidArgument:
--> Result:
--> (vmodl.fault.InvalidArgument) {
-->    faultCause = (vmodl.MethodFault) null,
-->    faultMessage = (vmodl.LocalizableMessage) [
-->       (vmodl.LocalizableMessage) {
-->          key = "msg.disk.extendFailure",
-->          arg = (vmodl.KeyAnyValue) [
-->             (vmodl.KeyAnyValue) {

パターンが変更されるまで、「vm-1178」を含むすべての行と「-->」で始まるすべての後続の行をキャプチャし、次にこれが発生するまでvm-1178を探し始めます。

これが意味があることを願っています。ありがとうございます!

ベストアンサー1

この試み、

awk '!/^-->/{p=0} /vm-1178/{p=1} p'
  • !/^-->/{p=0}p行が始まらないときはいつでもvar(printなど)を0に設定します-->
  • /vm-1178/{p=1}p:行が一致するたびにvar = 1を設定します/vm-1178/
  • pp:真の1行を印刷します(ここで= 1)。

おすすめ記事