何かのようなもの:
cat script.log | sed -n '/Name:/s/^.*Name:\([^)]*\)).*$/\1/gp'
仕事をする必要があります。
元の表現での最大の間違いは、2番目の括弧をエスケープしたことです。スニペットを実行すると、エラーが発生します。
sed: 1: "s/Name:\(.*\)\)/\1/g": RE error: parentheses not balanced
これを修正しても、sedはデフォルトですべての行を出力することがわかります。これが私が作り上げた表現がすることです。
sed式は。の形式を取り[address[,address]]function[arguments]ます。式にオプションのアドレス要素が含まれていませんでした。「Name:」を含むすべての行に一致する単一のアドレス( )を含めました。/Name:/この関数は、(1)検索パターンと(2)置換式の2つの引数を必要とする置換関数です。検索パターンは行全体に一致し、最初の括弧まで0個以上の文字を含む「Name:」に続く行のセグメントを抽出します。「エスケープされた」括弧はキャプチャグループを定義し、エスケープされていない括弧はキャプチャを終了します。パターンには、残りの行が含まれます(たとえば、.*$)。行全体が一致するため、キャプチャされた部分のみを含む置換式に置き換えられます。
これをすべてまとめると、単純なsedステートメントは「Name:」を含むすべての行に一致し、行全体をとの間の文字Name:と最初の左括弧())に置き換えます。フラグとフラグの-n追加によりp、一致した行のみが印刷されます。