Linux: travailler avec sed et awk

Cet exemple Linux implique une base de données de livres qui inclut le numéro ISBN de chaque titres. Dans les temps anciens, les numéros ISBN étaient dix chiffres et inclus un identifiant pour l'éditeur et un numéro unique pour chaque livre. Numéros ISBN sont maintenant treize chiffres pour les nouveaux livres.

Livres anciens (ceux publiés avant le premier de l'année 2007) ont à la fois l'ancien 10 chiffres et un nouveau numéro à 13 chiffres qui peut être utilisée pour les identifier. Pour cet exemple, le numéro à 10 chiffres existante restera dans la base de données et un nouveau champ - tenant le numéro ISBN-13 - sera ajouté à la fin de chaque entrée.

Pour venir avec le numéro ISBN-13 pour les entrées existantes dans la base de données, vous commencez avec 978, puis utilisez les 9 premiers chiffres de l'ancien numéro ISBN. Le chiffre treizième est un calcul mathématique (un vérifier chiffres) Obtenu en procédant comme suit:

  1. Ajouter tous les chiffres impairs placé (le premier, le troisième, le cinquième, et ainsi de suite).

  2. Multiplier tous les chiffres, même placés par 3 et les ajouter.

  3. Ajouter le total de l'étape 2 au total de l'étape 1.




  4. Découvrez ce que vous devez ajouter à arrondir le nombre jusqu'à la plus proche 10. Cette valeur devient le treizième chiffres.

Par exemple, considérez l'ISBN à 10 chiffres 0743477103. Il devient le premier 978 074 347 710, puis les étapes fonctionne comme ceci:

  1. + 8 + 9 + 7 3 + 7 + 1 = 35

  2. 7 * 3 = 21 - 3 = 0 * 0- 4 * 3 = 12 4 * 3 = 12 7 * 3 = 21- 0 * 3 = 0- 21 + 0 + 12 + 12 + 21 + 0 = 66

  3. 66 + 35 = 101

  4. 9 = 110-101. L'ISBN-13 devient ainsi 9780743477109.

La base de données commençant ressemble:

0743477103: Macbeth: Shakespeare, William1578518520: Solution The Innovator: Christensen, Clayton M.0321349946: (SCTS) Symantec Certified Technical Specialist: Alston, Nik1587052415: Contrôle de Cisco Network Admission, Volume I: Helfrich, Denise

Et vous voulez que la base de données résultant de changer de sorte que chaque ligne ressemble à quelque chose comme ceci:

0743477103: Macbeth: Shakespeare, William: 9780743477109

L'exemple qui suit accomplit cet objectif. Il est pas la plus jolie chose jamais écrite, mais il marche à travers le processus de la lutte contre ce problème, illustrant l'utilisation de awk et sed.


» » » » Linux: travailler avec sed et awk