¿Podemos cambiar el delimitador que usa grep?
Creo que, por defecto, grep usa \n
como delimitador.
linux
shell-script
grep
studiohack
fuente
fuente
$/
) y awk (RS
). O podrías hacer algo asíecho "$var" | sed 's/<delimiter>/\n/' | grep <pattern>
. Muchas respuestas, dependiendo de cuál sea su problema real.Respuestas:
Si le importa la salida,
tr
podría funcionar para usted:fuente
echo $my_var | tr @ '\n' | grep blahblah
$my var
Debe citar la variable para preservar espacios en blanco y líneas nuevas, es decirecho "$my_var" | ...
.agrep
de la Universidad de Arizona le permite establecer el delimitador. No es un reemplazo directo para grep; utiliza un algoritmo diferente (grep aproximado, puede coincidir con errores) y tiene una sintaxis de patrón diferente. Pero es una herramienta útil.Desafortunadamente, creo que debido a problemas de licencia, se han llamado varios proyectos similares
agrep
, y no todos son compatibles. Pero creo que todas las versiones le permiten establecer un delimitador.fuente
fuente
d="${1}"
lugar de solod="$1"
? (2) Debe expandir su advertencia: si se usa con varios archivos, también tiene un problema si alguno de los nombres de archivo contiene '@'. (3) (Selección de Nit) Un verdadero reemplazo / emulador "grep" también funcionaría con cero argumentos de archivo.Reemplace el delimitador cero ('@') con una nueva línea (\ n) antes de grep:
fuente
Cómo es esto ? Cualquier uso?
Establezca '@' a lo que se adapte a sus necesidades.
fuente