uso txt texto siguientes sera regulares por palabras líneas las expresiones devuelta cuál contar comando buscar avanzado archivos linux shell grep

linux - txt - grep expresiones regulares



La concordancia de palabra exacta grep(-w) no funciona con las rutas de archivos en un archivo de texto (1)

Estoy tratando de grep para un nombre de archivo con fullpath en un archivo que contiene algo así como salida ''ls -l'', pero no puede coincidir correctamente.

Línea en el script de shell que hace la búsqueda de cadenas

pcline=`grep -w "$file1" $file2` # grep for file1 in file2 contents

si hago eco del comando, la salida del comando se ve a continuación

grep -w run /home/rajesh/rootfs.layout Expected lrwxrwxrwx 1 root root 3 Aug 28 run Actual lrwxrwxrwx 1 root root 7 Aug 28 bin/run-parts lrwxrwxrwx 1 root root 3 Aug 28 run -rwxr-xr-x 1 root root 303 Aug 28 tests/aes/run.sh -rwxr-xr-x 1 root root 445 Aug 28 tests/auto_ui/run.sh -rwxr-xr-x 1 root root 320 Aug 28 tests/available_memory/run.sh -rwxr-xr-x 1 root root 308 Aug 28 tests/fonts/run.sh -rwxr-xr-x 1 root root 309 Aug 28 tests/html_config_page/run.sh -rwxr-xr-x 1 root root 361 Aug 28 tests/ipc/run.sh -rwxr-xr-x 1 root root 304 Aug 28 tests/JSON/run.sh -rwxr-xr-x 1 root root 303 Aug 28 tests/log4cplus_cpp/run.sh -rwxr-xr-x 1 root root 301 Aug 28 tests/log4cplus_c/run.sh -rwxr-xr-x 1 root root 751 Aug 28 tests/msm_basic/run.sh -rwxr-xr-x 1 root root 472 Aug 28 tests/res_man_dependency/run.sh -rwxr-xr-x 1 root root 465 Aug 28 tests/res_man_ipc/run.sh -rwxr-xr-x 1 root root 789 Aug 28 tests/res_man_multi_process/run.sh -rwxr-xr-x 1 root root 469 Aug 28 tests/res_man_private_client/run.sh -rwxr-xr-x 1 root root 492 Aug 28 tests/res_man_public_client/run.sh -rwxr-xr-x 1 root root 311 Aug 28 tests/virt_mem_config/run.sh lrwxrwxrwx 1 root root 6 Aug 28 var/run]

El truco que probé es agregar un espacio en blanco, que está garantizado en mi archivo de entrada, esto funciona en la consola, pero no cuando está asignado a una variable.

grep " tests/aes/run.sh" /home/rajesh/rootfs.layout

Línea en la secuencia de comandos

pcline=`grep /"" $file1"/" $file2` # grep for file1 in file2 contents

Por favor, avíseme si he cometido algún error en este script.


Puedes usar egrep así:

egrep "(^| )$file1( |$)" "$file2"

Si file1="run" , el comando anterior coincidirá con la run cadena precedida por el inicio o el espacio de la línea y seguido por el espacio o el final de la línea.