web-dev-qa-db-fra.com

Utilisation de awk pour imprimer des caractères d'index spécifiques sur une ligne

Très bien, donc je sais qu'il est assez simple d'imprimer des arguments spécifiques d'une ligne en utilisant $:

$ cat file
hello world

$ awk '{print $1}' file
hello

Mais que faire si je veux imprimer les caractères 2 à 8? ou 3 à 7? Est-ce possible avec awk?

37
Jordan
awk '{print substr($0,2,6)}' file

la syntaxe de substr () est

substr(string,start index,length)

56
nims

Oui. Vous pouvez utiliser la fonction substr:

http://www.starlink.rl.ac.uk/docs/sc4.htx/node38.html

Dans votre cas - pour les caractères d'impression de 2 à 8:

echo "hello" | awk '{ print substr( $0, 2, 6 ) }'

le résultat est:

Ello

3
nick

Si Perl est une option:

Perl -lne 'print substr($_,1,6)' file

La sortie est identique à la réponse de @nims

3
Chris Koknat