Be', semplificando molto, un'istruzione per
sed può essere costituita da 0, 1 oppure 2 indirizzi, a cui segue una funzione (comando). Nel tuo caso la funzione è
d (delete=elimina). Ora un indirizzo può essere: un'espressione regolare, un numero (di riga) oppure il simbolo di dollaro (che corrisponde all'ultima riga dell'input). Due indirizzi sono separati da una virgola. Gli indirizzi servono in genere per selezionare le righe su cui operare.
Nel primo caso hai 2 indirizzi (separati dalla virgola) e una funzione di sed (
d=elimina), nel secondo caso invece hai 1 indirizzo (l'espressione regolare) e la funzione
d, che verrà applicata alle righe sulle quali si ha corrispondenza con l'espressione regolare.
Quindi il comando
sed '2,$d'
elimina tutte le righe a partire dalla seconda fino all'ultima dell'input. In pratica
2,$
seleziona un intervallo di righe: dalla 2 fino all'ultima.
Un'espressione regolare è di solito delimitata dal carattere
/, ma nulla vieta di usare un'altro carattere a piacere (in questo caso va "dichiarato", facendolo precedere da un backslash
\ ). Ad esempio. il secondo comando potrebbere essere scritto anche:
sed '\x^$xd'
oppure
sed '\,^$,d'
o ancora
sed '\d^$dd
etc.
In ogni caso è tutto spiegato in dettaglio nella manpage del comando sed (per il tuo sistema operativo, perché ci sono varie versioni di sed in giro).