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.