如何迭代地找到两个模式之间的行数?

Ale*_*ohn 1 bash awk sed

这个问题类似,但与123不同。

我不想将线条粘贴到两个模式之间,而是想迭代地计算线条数。

例如,给出file.txt这些字符串

abc
123
daafsd
asdfas
asdcasdfa
123
sdfasdc
asdfasdcasd
asdfasdfasdf
asdfasdfasdf
ascasdcasdcasd
123
asdcasdfacasdcas
123
asdfasdcasdcasc
asadfasdfas
123
Run Code Online (Sandbox Code Playgroud)

我想计算 的模式之间的线条123。因此,预期输出将是:

3
5
1
2
Run Code Online (Sandbox Code Playgroud)

有什么建议么?

小智 6

awk '$0=="123" {if (n) print NR-1-n; n=NR}' file
Run Code Online (Sandbox Code Playgroud)

这使用匹配行的行号来打印它们之间的行数。