私の Linux 端末では、そのような出現回数を見つける必要があります。ここで、pattern 1
とpattern 2
は、正確にn
行を隔てた 2 行にpattern 3
表示され、これらのn
行のいずれにも表示できない追加の要件があります。たとえば、テキストファイルがある場合
...
a
* pat1 **
b
c
** pat2 ****
* pat1 **
b
** pat2 ****
*******pat1**
efda
*pat3****
**pat2********
...
n=2
とpattern 1
is pat1
、pattern 2
is pat2
、およびpattern 3
isの場合pat3
、出現は 1 回だけです。
awk
、 (またはその姉妹)などのユーティリティツールでこれを便利に行う方法。これを行うgrep
ためにpythonまたはperlを使用する方法は知っていますが、これらのユーティリティツールでも同じことができるかどうか疑問に思っています。
ありがとうございました。
これは、@Barmarの回答を読んだ後に試したものです
awk -v n=2 '/pat1/ { first = NR }
!/pat3/
/pat2/ && first && NR - first == n { count++ } END {print count}'
しかし、私はまだそれを正しく理解していませんでした。4 つのシナリオでこれを行う必要があります。
pat1
とpat3
同じです。pat2
とpat3
同じです。- これら 3 つのパターンはすべて同じです。
- これらの 2 つが同じではありません。