Friday, November 12, 2021

[SOLVED] Extract Nth line after matching pattern

Issue

I want to extract the Nth line after a matching pattern using grep, awk or sed.

For example I have this piece of text:

      Revision:
      60000<br />

And I want to extract 60000.

I tried Revision:([a-z0-9]*)\s*([0-9]){5} which matches the Revision together with the revision number but when I pass it to grep: grep Revision:([a-z0-9]*)\s*([0-9]){5} file.html I get nothing.

How can I achieve this?


Solution

To extract the Nth line after a matching pattern you want:

awk 'c&&!--c;/pattern/{c=N}' file

e.g.

awk 'c&&!--c;/Revision:/{c=5}' file

would print the 5th line after the text "Revision:"/.

See Printing with sed or awk a line following a matching pattern for more information.



Answered By - Ed Morton