Linux: Trabalhando com awk e sed

Este exemplo envolve o Linux um banco de dados de livros que inclui o número de ISBN de cada título. Nos velhos tempos, números ISBN foram dez dígitos e incluiu um identificador para o editor e um número único para cada livro. ISBN números estão agora treze dígitos para novos livros.

Livros velhos (as publicadas antes da primeira de 2007) têm ambos a idade de 10 dígitos e um novo número de 13 dígitos, que pode ser utilizada para os identificar. Para este exemplo, o número de 10 dígitos existente vai ficar na base de dados e um campo de novo - que prende o número ISBN-13 - irá ser acrescentado ao final de cada entrada.

Para chegar com o número de ISBN-13 para as entradas existentes no banco de dados, você começa com 978, em seguida, usar os primeiros 9 dígitos do número antigo ISBN. O dígito décimo terceiro é um cálculo matemático (a dígito de verificação) Obtido, fazendo o seguinte:

  1. Adicione todos os dígitos ímpares colocado (o primeiro, o terceiro, o quinto, e assim por diante).

  2. Multiplique todos os dígitos, mesmo colocadas por 3 e adicioná-los.

  3. Adicionar o total de Etapa # 2 ao total da Etapa # 1.

  4. Descubra o que você precisa adicionar para arredondar o número até o 10. mais próximo Este valor torna-se o dígito XIII.

Por exemplo, considere o ISBN de 10 dígitos 0743477103. O primeiro torna-se 978.074.347.710, e em seguida os passos trabalhar para fora como este:

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

  2. 7 * 3 = 21 - 0 * 3 = 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. O ISBN-13 torna-se assim 9780743477109.

A base de dados começando assemelha-se:

0743477103: Macbeth: Shakespeare, William1578518520: Solução do Inovador: Christensen, Clayton M.0321349946: (SCTS) Symantec Certified Specialist técnico: Alston, Nik1587052415: Cisco Network Admission Control, Volume I: Helfrich, Denise

E você quer que o banco de dados resultante para mudar de modo que cada linha semelhante algo como isto:

0743477103: Macbeth: Shakespeare, William: 9780743477109

O exemplo que se segue realiza este objetivo. Não é a coisa mais bonita já escrito, mas ele anda através do processo de resolução deste problema, que ilustra o uso de awk e sed.

menu