awk -v m="\x01" -v N="3" '{$N=m$N ;print substr($0, index($0,m)+1)}'
Cette commande coupe ce qui se trouve avant le champ nr. donné, N, et imprime tout le reste de la ligne, y compris le champ nr.N et en maintenant l'espacement original (elle ne reformate pas). Cela n'a pas d'importance si la chaîne du champ apparaît aussi quelque part ailleurs dans la ligne, ce qui est le problème avec la réponse d'Ascherer.
Définir une fonction :
fromField () {
awk -v m="\x01" -v N="$1" '{$N=m$N; print substr($0,index($0,m)+1)}'
}
Et utilise-le comme ça :
$ echo " bat bi iru lau bost " | fromField 3
iru lau bost
$ echo " bat bi iru lau bost " | fromField 2
bi iru lau bost
La sortie conserve tout, y compris les espaces de fin de ligne Pour N=0, il renvoie la ligne entière, telle quelle, et pour n>NF, la chaîne vide.
1 votes
Duplicata possible de Utilisation d'awk pour imprimer toutes les colonnes de la nième à la dernière