¿Cómo construir un comando grep con un argumento variable en bash?

¿Cómo construir un comando grep con un argumento variable en bash?

Estoy intentando hacer algo como esto en bash:

grep ( date | awk '{print "2006-" $6}' ) /some/file/here

Pero esa sintaxis es incorrecta.

El objetivo es buscar /algunos/archivos/aquí para el patrón 2006-2011, donde 2011 es el año actual.

Respuesta1

grep "$(date | awk '{print "2006-" $6}')" /some/file/here

"..."mantiene su contenido como un argumento (incluso si hay espacios en blanco).

$(...)es para "sustitución de comandos", donde la salida estándar de ejecutar el comando incrustado se colocará en la línea de comandos original. (Otra sintaxis, `...`, también es común pero mucho más difícil de anidar).

Más fácil:

grep "$(date +'2006-%Y')" /some/file/here

Aquí, utiliza la capacidad de la fecha para formatear la salida de forma arbitraria.

Tenga en cuenta que ninguno de estos coincide con ningún año en el rango 2006-2011, coinciden con la cadena literal "2006-2011". Si desea igualar algún año, háganoslo saber.

información relacionada