varios txt siguientes sera regulares por patrones líneas las extendidas expresiones ejemplos devuelta cuál comando regex bash variables grep

regex - txt - afinar los argumentos de entrada bash en la expresión regular de egrep



grep varios patrones (1)

aquí está el script que estoy tratando de ejecutar

#!/bin/bash charlist=$1 #possible input:cat wordlength=$2 #possible input: 3 cat ./nounlist | egrep /b[${charlist}]/b{${wordlength}}

salida: nada. # debería haber capturado lo siguiente (usando la línea de comando)

$ cat nounlist | egrep "/b[cat]{3}/b" act cat''s_cradle cat cat-o''-nine-tails cat''s-paw Sno-cat act act act act rat-a-tat-tat cat cat''s-claw cat''s_foot cat''s-ear cat''s-tail cat''s-ear cat''s_eye

Básicamente, estoy tratando de escribir un guión que tome dos argumentos (lista de palabras, longitud de palabra) y busque todas las palabras en la lista de nominales que consisten en el carácter en la lista de palabras y tiene la longitud de la variable de longitud de palabra. Lo que quiero saber es cómo poner las variables bash en la expresión regular de egrep como cadenas.

¡Gracias!


Debe envolver el argumento entre comillas dobles para que Bash no intente manejar las barras diagonales inversas, y mueva el segundo /b a después de {${wordlength}} :

cat ./nounlist | egrep "/b[${charlist}]{${wordlength}}/b"

(Si ejecuta echo /b , verá que simplemente imprime b . Esto es porque Bash asume que el / está ahí para evitar que b tenga algún significado especial, por lo que lo elimina).