Linux: Arbeiten mit awk und sed

Das Linux Beispiel beinhaltet eine Datenbank der Bücher, die die ISBN-Nummer des jeweiligen Titel enthält. In den alten Tagen, waren ISBN-Nummern zehn Ziffern und enthalten eine Kennung für den Verlag und eine eindeutige Nummer für jedes Buch. ISBN-Nummern sind jetzt dreizehn Ziffern für neue Bücher.

Alter Bücher (die veröffentlicht vor dem ersten 2007) haben beide die alten 10-stellige und einen neuen 13-stellige Nummer, die verwendet werden können, um sie zu identifizieren. In diesem Beispiel wird die bestehende 10-stellige Zahl in der Datenbank und ein neues Feld bleiben - die ISBN-Nummer 13 halten - wird am Ende jedes Eintrags hinzugefügt werden.

Zu kommen mit der ISBN-Nummer 13 für die vorhandenen Einträge in der Datenbank, beginnen Sie mit 978, verwenden Sie dann die ersten 9 Ziffern der alten ISBN-Nummer. Die dreizehnte Ziffer ist eine mathematische Berechnung (a Prüfziffer), Indem Sie folgende erhalten:

  1. Fügen Sie alle ungeradzahligen Stellen plaziert (die erste, die dritte, die fünfte und so weiter).

  2. Multiplizieren Sie alle selbst platzierten Ziffern von 3 und fügen Sie sie.

  3. Fügen Sie die insgesamt Schritt # 2 auf die Summe der Schritt # 1.

  4. Finden Sie heraus, was Sie den dreizehnten Ziffer Dieser Wert wird die Zahl gerundet auf die nächsten 10 hinzufügen müssen.

Betrachten wir zum Beispiel die 10-stellige ISBN 0743477103. Es wird zuerst 978.074.347.710, und dann die Schritte funktionieren wie folgt aus:

  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. 110-101 = 9. Die ISBN-13 wird somit 9780743477109.

Die beginnende Datenbank ähnelt:

0743477103: Macbeth: Shakespeare, William1578518520: Die Lösung des Innovator: Christensen, Clayton M.0321349946: (SCTS) Symantec Certified Technical Specialist: Alston, Nik1587052415: Cisco Network Admission Control, Band I: Helfrich, Denise

Und Sie wollen die resultierende Datenbank, so dass jeder Zeile ähnelt so etwas zu ändern:

0743477103: Macbeth: Shakespeare, William: 9780743477109

Das Beispiel, das folgt, erreicht dieses Ziel. Es ist nicht das schönste, was jemals geschrieben, aber es geht durch den Prozess, dieses Problem anzugehen ist, welche die Verwendung von awk und sed.

Menü