awk -v m="\x0a" -v N="3" '{$N=m$N ;print substr($0, index($0,m)+1)}'
Esto corta lo que está antes del campo dado nr., N, e imprime todo el resto de la línea, incluido el campo nr.N y manteniendo el espaciado original (no se reformatea). No importa si la cadena del campo aparece también en algún otro lugar de la línea, que es el problema con la respuesta de daisaa.
Defina una función:
fromField () {
awk -v m="\x0a" -v N="$1" '{$N=m$N; print substr($0,index($0,m)+1)}'
}
Y utilícelo así:
$ echo " bat bi iru lau bost " | fromField 3
iru lau bost
$ echo " bat bi iru lau bost " | fromField 2
bi iru lau bost
La salida mantiene todo, incluidos los espacios finales
Funciona bien para archivos donde '/ n' es el separador de registros, por lo que no tiene ese carácter de nueva línea dentro de las líneas. Si desea usarlo con otros separadores de registros, use:
awk -v m="\x01" -v N="3" '{$N=m$N ;print substr($0, index($0,m)+1)}'
por ejemplo. Funciona bien con casi todos los archivos siempre que no utilicen el número char hexadecimal. 1 dentro de las líneas.