私が持っているコマンドの出力は、「成功」の場合、次の形式になります。
/ > -------
ABC123
/ >
ただし、このコマンドが次のようなものを出力する可能性があります (「失敗」):
/ > -------
ABC123
-------
DEF456
-------
Hello (world!)
-------
(any old string, really)
/ >
または、これ(別の「失敗」):
/ > / >
最初の例では、次のように出力します。
ABC123
他の 2 つの例では、空の文字列を出力したいと思います。
私はこれを試しました.3番目の例ではうまくいきました:
mycmd | pcregrep -M '(?:/\s>\s{2}-{7}\n)[^\n]*(?!\n.*\n)'
しかし、最初の 2 つの例では、次のように出力されました。
/ > -------
ABC123
私は何をすべきか途方に暮れています。/ > -------
上記の私の正規表現は、先頭に一致するがそれをキャプチャするのではなく、改行で終わる別の行が続いていない場合にのみ次の行に一致する試みでした。この問題を解決する以外のものを使用しても問題ありませんが、またはpcregrep
でこれを表現することはできません。Python を使用しますが、私のニーズには遅すぎます。何か助けはありますか?awk
sed