匹配模式后提取第N行

Jac*_*ieg 4 regex awk grep sed

我想提取使用匹配模式之后的第N行grep,awksed.

例如,我有这段文字:

      Revision:
      60000<br />
Run Code Online (Sandbox Code Playgroud)

我想提取60000.

我尝试过Revision:([a-z0-9]*)\s*([0-9]){5}将修订版与修订版号一起匹配,但是当我将它传递给grep时:grep Revision:([a-z0-9]*)\s*([0-9]){5} file.html我什么都没得到.

我怎样才能做到这一点?

Ed *_*ton 19

extract the Nth line after a matching pattern你想要的:

awk 'c&&!--c;/pattern/{c=N}' file
Run Code Online (Sandbox Code Playgroud)

例如

awk 'c&&!--c;/Revision:/{c=5}' file
Run Code Online (Sandbox Code Playgroud)

会在文本"Revision:"/之后打印第5行.

仅供参考以下习语描述如何在给定特定模式匹配的情况下选择一系列记录:

a)从某种模式打印所有记录:

awk '/pattern/{f=1}f' file
Run Code Online (Sandbox Code Playgroud)

b)在某些模式后打印所有记录:

awk 'f;/pattern/{f=1}' file
Run Code Online (Sandbox Code Playgroud)

c)在某种模式后打印第N条记录:

awk 'c&&!--c;/pattern/{c=N}' file
Run Code Online (Sandbox Code Playgroud)

d)打印每条记录后,除了一些模式的第N个记录:

awk 'c&&!--c{next}/pattern/{c=N}1' file
Run Code Online (Sandbox Code Playgroud)

e)在某些模式后打印N条记录:

awk 'c&&c--;/pattern/{c=N}' file
Run Code Online (Sandbox Code Playgroud)

F)打印后,除了一些模式的N条记录每一条记录:

awk 'c&&c--{next}/pattern/{c=N}1' file
Run Code Online (Sandbox Code Playgroud)

g)从某种模式打印N条记录:

awk '/pattern/{c=N}c&&c--' file
Run Code Online (Sandbox Code Playgroud)

我从"F"改为变量名的"发现",以"C"为"计数"在适当情况下为这更多表现的是什么变量实际上是.

  • `c&amp;&amp;!--c` 等价于 `c!=0 &amp;&amp; --c==0` 而 `c&amp;&amp;c--` 等价于 `c!=0 &amp;&amp; --c&gt;=0`;替代方案可能更容易理解。 (2认同)

ler*_*s04 6

lnb一个空白/空行之后打印第th行:

要打印的行索引(在 bash shell 中):

lnb=2
Run Code Online (Sandbox Code Playgroud)

在正则表达式匹配后打印第lnbth行:

在正则表达式匹配后打印所有lnbth行: