AWK - Display line after the matching string

awk '/the_string/{getline; print}' file.txt

Example

Assuming a file, test.txt, exists with the following contents:

10   Peter     Terence   Roux        45
11   Virginia  Genevieve  Roux        45
12   Felix     Devon     Roux         5
13   David     Bruce     Stevenson   48
14   Bob       James     Smith       16
48   Adam      Winter    Ridley      23

Running

awk '/Peter/{getline; print}' test.txt

returns:

11   Virginia  Genevive  Roux        45

NOTE: This simply returns the next line after the search string of Peter.


Running

awk '/Roux/{getline; print}' test.txt

returns:

11   Virginia  Genevieve  Roux       45
13   David     Bruce     Stevenson   48

NOTE: This finds the search string Roux in row 10, so it includes the next row 11 in the result; even though row 11 also contains the same search string.

It then proceeds with row 12 which also contains the search string Roux, so it includes row 13 in the results.

No further rows contain the search string so nothing else is added to the result.


Running

awk '/4/{getline; print}' test.txt

returns:

11   Virginia  Genevieve  Roux       45
14   Bob       James     Smith       16
48   Adam      Winter    Ridley      23

NOTE: This finds the search string 4 in row 10, so it includes the next row 11 in the result; even though row 11 also contains the same search string.

It then proceeds from row 12. It does not find the search string 4, so moves to row 13.

In row 13 it finds the search string 4, so it includes the next row 14 in the results; even though row 14 also contains the same search string.

It then proceeds from row 15.

The last row contains the search string; and as there is no other row below that can be added to the result; the last row itself is added. Possibly a bug?