J’ai du mal à lire une chaîne dans une ligne spécifique et une position spécifique. J’ai un fichier d’entrée qui a une position fixe et une longueur fixe pour chaque valeur dans chaque ligne. Voici un exemple de mon fichier d’entrée:
sltele Hoodie 24051988 d12Hdq sltele Hoodie 07051987 d30Hdq sltele Hoodie 07082011 d08Hdq sltele Hoodie 09081961 d04Hdq sltele Hoodie 20041962 d14Hdq sltele Hoodie 20032000 d01Hdq sltele Hoodie 13062002 d05Hdq
Je dois lire une chaîne dans la 3ème colonne en première ligne. Donc, j’ai utilisé cette
awk 'NR==1 {print $2, $3}' inputfile.inp
Comment puis-je obtenir un résultat exact avec la position du caractère comme paramètre? (12-18 et 21-28)
utiliser cut -c
Consultez la page de manuel pour plus de détails.
vous pouvez également utiliser les éléments suivants:
echo "abcdefghij" | awk '{print substr($0,2,2),substr($0,6,2)}' bc fg
ci-dessus est 2 caractères de la deuxième position et 2 caractères de la 6ème position.
votre solution sera:
awk 'NR==1 {print substr($0,12,6),substr($0,21,7)}' inputfile.inp
la commande ci-dessus obtiendra les 6 caractères de la 12ème position et 7 caractères de la 21ème position de la ligne 1.
Vous pouvez aussi utiliser sed :
sed -rn "1 s@.{11}(.{7}).{2}(.{8})@\1\2@p" filename
Explication: