[awk] Index des champs de lignes variables
Bonjour
j'ai un fichier qui se présente avec des lignes qui n'ont pas un NF fixe, car un des champs (le nom, ici en $3 en première ligne) est parfois composé d'espaces :
Code:
1 2 3
| abc 2Dtoto nom1 2 2019aaa
def 2Dtiti nom2 ext -4 2019bbb
ghi 2Dtutu nom3 extA extB 3 2019ccc |
Je souhaite extraire ce nom en totalité. J'ai tenté via index, en tentant d'extraire les données entre le début du $3 et le celui de l'avant dernier champ (NF-1) moins 1 position, çad avec index et un calcul de longueur adéquate :
Code:
nom = substr($0,index($0,$3),index($0,$(NF-1))-index($0,$3)-1)
Malheureusement, ça ne marche pas pour la ligne 1 et la ligne 3 : l'index trouve l'occurrence de $(NF-1) [='2' ou '3' pour ces lignes] bien avant cette position (càd en $2 et $3 respectivement).
Question : n'y a-t-il pas un moyen de connaitre les position dans $0 de chaque champ $i (de 1 à NF) ?
Merci pour toute idée