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:
Adicione todos os dígitos ímpares colocado (o primeiro, o terceiro, o quinto, e assim por diante).
Multiplique todos os dígitos, mesmo colocadas por 3 e adicioná-los.
Adicionar o total de Etapa # 2 ao total da Etapa # 1.
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:
9 + 8 + 7 + 3 + 7 + = 35 1
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
66 + 35 = 101
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.