jueves, 3 de octubre de 2019

Scripts de Linux XVII

awk

Partimos de un fichero de texto cualquiera, fichero.txt.

  1. Realiza un script que te muestre el texto comprendido desde la línea que contiene la primera palabra hasta la línea que contiene la segunda palabra. Las dos palabras las pasas como argumentos. Utiliza awk.
  2. awk "/$1/,/$2/" fichero.txt
  3. Realiza un script que te muestre el texto contenido desde las dos palabras que pides por teclado.
  4. sed -n "/palabra1/,/palabra2/p" fichero.txt
  5. Sácame las líneas que tengan más de 18 caracteres, sustituyéndolas por "..."
  6. awk '{if(length($0) > 12) print substr($0,1,12)”…”} fichero.txt
  7. Muéstrame el fichero pero con el segundo campo de todas las filas sustituido por "segundo".
  8. awk '$2="segundo" {print $0}' fichero.txt
  9. Sácame los campos 1 y 3 del fichero.txt ordenados por el 1º campo.
  10. awk ‘{print $1, $3}’fichero.txt| sort -k1
    awk ‘{print $1, $3 | sort -r }’fichero.txt 
  11. Realiza un script que te muestre las lineas del fichero.txt con más de 17 caracteres que contenga en su 3º campo la cadena "sa".
  12. awk '$2 ~ /sa/ {if(length($0) > 17) print}' fichero.txt
  13. Muéstrame el fichero totalmente al revés, desde la última palabra de la última línea.
    1. var=(`cat fichero.txt`)
      echo ${#var[@]}
      for ((i=${#var[*]};i>=0;i--))
      do
      echo ${var[i]}
      done
      
    2. awk ‘BEGIN {resultado=””}[línea =””;for(i=NF;i>0;i--)línea=línea” “Si; 
      resultado=línea”\n”resultado}END{PRINT resultado}’ fichero.txt
      
    3. tac fichero.txt| awk ‘{for (i=NF;i>0;i--) print $i}’

No hay comentarios:

Publicar un comentario