私の 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 1is pat1、pattern 2is pat2、およびpattern 3isの場合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 つが同じではありません。