I Have An AWK Answer From ChatGPT, But What Does It Mean?

Getting the right answer is great, but understanding it is better. I don't understand this awk snippet, but we will by the end of this post:

netstat -anvp tcp | awk 'NR<3 || /LISTEN/'

The command is intended for BSD userlands; netstat shows us what software is listening or sending on what ports. I only want listeners, so awk filters out...something. ChatGPT wasn't super clear about its reasoning. I started figuring it out by scanning man awk:

NR
The ordinal number of the current record from the start of input. Inside a BEGIN action the value shall be zero. Inside an END action the value shall be the number of the last record processed.
|| /LISTEN/
OR search for the string LISTEN, a standard string in the netstat output

I don't quite understand what NR<3 is getting at (quiet, greybeards in the back who already know). Here's my investigation:

; mkdir tmp && cd tmp && touch 1 2 3 
; ls | awk 'NR<3'

1
2

; cd .. && cat Dockerfile| awk 'NR<3'
FROM golang:1.23 AS base

                     
                
Awk is letting through the first couple of lines; apparently a record is a newline terminated unit of info. The awk command as a whole, then, lets through the header for the output from netstat, then the actual info I was looking for. Practically, it's a touch nicer than | grep LISTEN, but functionally the same.