Posted By

Juanje on 05/30/08


Tagged

spanish awk tips examples


Versions (?)

Who likes this?

1 person have marked this snippet as a favorite

Juanje


Awk examples


 / Published in: Bash
 

  1. # IP para la interfaz eth0
  2. ifconfig eth0 | awk '/inet addr/ {split ($2,A,":"); print A[2]}'
  3.  
  4. resultado = 192.168.1.33
  5.  
  6. # Buscar valor(sin comillas) para una variable en un archivo de configuración
  7. mysettings=/tmp/settings
  8. cat <<EOF > ${mysettings}
  9. xerver=vesa
  10. xres="1280x800"
  11. force_vesa="yes"
  12. EOF
  13.  
  14. awk -F "=" '/^xres/ {gsub(/\"/,"",$2) ; print $2}' ${mysettings}
  15.  
  16. resultado = 1280x800
  17.  
  18.  
  19. # Imprimir valores de líneas que se repiten e imprimir el número de líneas
  20. # Buscar las líneas del menu.lst que comiencen por "kernel" y mostrar el kernel que arrancan (sin el path) y por último el número de kernels encontrados.
  21.  
  22. awk 'BEGIN{A=0} /^kernel/ {gsub(/\/boot\//,"",$2) ; print $2 ; A=A+1} END{print "Entradas de kernel encontradas: "A}' /boot/grub/menu.lst
  23.  
  24. ### Desglosado
  25. awk 'BEGIN{A=0}
  26. /^kernel/ {
  27. gsub(/\/boot\//,"",$2)
  28. print $2
  29. A=A+1
  30. }
  31. END {
  32. print "Entradas de kernel encontradas: "A
  33. }' /boot/grub/menu.lst
  34.  
  35. Resultado =
  36.  
  37. vmlinuz-2.6.24-17-generic
  38. vmlinuz-2.6.24-17-generic
  39. vmlinuz-2.6.24-16-generic
  40. vmlinuz-2.6.24-16-generic
  41. memtest86+.bin
  42. Entradas de kernel encontradas: 5
  43.  
  44.  
  45. # Extraer y formatear información desde un archivo. En este caso información sobre los procesadores:
  46.  
  47. awk -F: '/^processor/{printf " Procesador"$2" es "};/^model name/{printf $2};/^vendor_id/{printf vendor};/^cpu MHz/{printf " %dMHz",int($2)};/^cache size/{printf ","$2" Cache"};/^$/{print ""}' /proc/cpuinfo
  48.  
  49. ### Desglosado
  50. awk -F: '/^processor/ {printf " Procesador"$2" es "}
  51. /^model name/ {printf $2}
  52. /^vendor_id/ {printf vendor}
  53. /^cpu MHz/ {printf " %dMHz",int($2)}
  54. /^cache size/ {printf ","$2" Cache"}
  55. /^$/ {print ""}' /proc/cpuinfo
  56.  
  57. resultado =
  58.  
  59. Procesador 0 es Genuine Intel(R) CPU 1400 @ 1.83GHz 1000MHz, 2048 KB Cache
  60. Procesador 1 es Genuine Intel(R) CPU 1400 @ 1.83GHz 1000MHz, 2048 KB Cache
  61.  
  62.  
  63. # Imprimir valores de una sóla línea. En este caso del /proc/cmdline
  64.  
  65. cat /proc/cmdline
  66.  
  67. resultado =
  68.  
  69. root=UUID=e9001fb7-d3af-4037-87c3-c105fd74d67b ro quiet splash locale=es_ES lpj=7330000
  70.  
  71. # Ahora filtramos
  72.  
  73. awk -F= -v RS=" " '/locale/ {print $2}' /proc/cmdline
  74.  
  75. resultado = es_ES
  76.  
  77. # Bucle para búsqueda eliminando caracteres que no queramos
  78. ## En un mail tenemos esta línea:
  79. To: =?ISO-8859-1?Q?Lista_de_usuarios_de_Zope_en_espa=F1ol?= <zope-es@foo.org>, jojeda@bar.es, Juanje Ojeda <juanje.ojeda@foobar.com>
  80.  
  81. ## y buscamos las direcciones de correo para los destinatarios (^To:)
  82. awk '/^To:/ {for (i=1; i<=NF; i++) if ( $i ~ "@" ) {gsub(/</,"",$i); gsub(/>/,"",$i); gsub(/,/,"",$i); print $i}}' archivo
  83.  
  84. ### Desglosado:
  85. awk '/^To:/ { # Busca líneas que comiencen por "To:"
  86. for (i=1; i<=NF; i++) # Recorre la lista de campos de la línea encontrada
  87. if ( $i ~ "@" ) { # Busca campos que contengan "@"
  88. gsub(/</,"",$i) # Elimina el caracter "<" si lo contiene
  89. gsub(/>/,"",$i) # Elimina el caracter ">" si lo contiene
  90. gsub(/,/,"",$i) # Elimina el caracter "," si lo contiene
  91. print $i # Muestra el campo sin los caracteres eliminados
  92. }
  93. }' archivo
  94.  
  95. Resultado:
  96.  
  97. zope-es@foo.org
  98. jojeda@bar.es
  99. juanje.ojeda@foobar.com
  100.  

Report this snippet  

You need to login to post a comment.