
Estoy intentando escribir un script awk para buscar un patrón proporcionado por el usuario en un archivo.
Mi código se ve así:
awk 'BEGIN{printf "Enter : ";getline input<"/dev/tty"} /'"$input"'/ {print}' <abc.txt
Lo que obtengo como resultado es el archivo completo. ¿Alguien puede ayudarme a encontrar dónde me estoy equivocando?
Respuesta1
Lo que haces es: lees el patrón de tty, lo colocas en una variable de awk (no del shell) llamada entrada, luego haces coincidir la línea del contenido de uncaparazónvariable llamada entrada. (Solo mire las comillas e intente interpretar el código usted mismo). Esa variable está vacía, por lo que awk coincide con la línea //, una expresión regular vacía que siempre coincide.
Todo lo que necesitas hacer es
$0 ~ input { print }
o
match( $0, input) { print }
En realidad, "{ imprimir }" se puede omitir porque la acción predeterminada para cualquier asunto coincidente es imprimir el registro.