Linux: trabalhar com awk e sed
Este exemplo Linux envolve 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 antigos (aqueles publicados antes do primeiro de 2007) têm ambos o velho de 10 dígitos e um novo número de 13 dígitos que pode ser usado para identificá-los. 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:
Adicionar todos os dígitos ímpares colocado (o primeiro, o terceiro, o quinto, e assim por diante).
Multiplique todos os dígitos ainda 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 978074347710, e em seguida os passos trabalhar fora como este:
9 + 8 + 7 + 3 + 7 + 1 = 35
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.
O banco de dados começando lembra:
0743477103: Macbeth: Shakespeare, William1578518520: Solução do Inovador: Christensen, Clayton M.0321349946: (SCTS) Symantec Certified Technical Specialist: 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 a seguir realiza este objetivo. Não é a coisa mais bonita já escrito, mas ele anda através do processo de resolução deste problema, ilustrando o uso de awk e sed.