l
ist die Variable, die den ersetzten Text enthält. $l
ist der Wert der Spaltennummer, auf den der in der Variablen gespeicherte Wert verweist l
. Da der l
Wert nicht mit Ziffern beginnt, behandelt awk die Zeichenfolge als Zahl "0". Sie erhalten $0
also den aktuellen Datensatz.
Du willst das stattdessen
print "mv", $1, l