GNU/Linux >> Tutoriales Linux >  >> Linux

¿Prueba de shell para encontrar un patrón en una cadena?

Solo quería preguntar si hay algún comando que funcione en shells comunes (bash, dash, kornshell). Se supone que comprueba si la line variable contiene cualquier parte de la ruta.

if [[ $line =~ "$PWD"$ ]] ;then

Respuesta aceptada:

Sí, las versiones recientes de bash pueden hacer esto:

$ pwd
/home/terdon
$ line="I'm in /home/terdon"
$ [[ "$line" =~ "$PWD"$ ]] && echo yes
yes

La misma sintaxis funciona en zsh y ksh pero no en dash. Hasta donde yo sé, dash no tiene tales capacidades.

Tenga en cuenta que su expresión regular está comprobando si la variable $line termina con $PWD . Para comprobar si $PWD coincide con cualquier lugar en $line , elimine el $ :

$ line="I'm in /home/terdon, are you?"
$ [[ "$line" =~ "$PWD" ]] && echo yes
yes

Linux
  1. ¿Cómo probar qué Shell estoy usando en una terminal?

  2. ¿Solo devolver la cadena coincidente en Sed?

  3. ¿Encontrar patrón y mover?

  4. Manipular {} Cadena de retorno de Find -exec?

  5. ¿Cómo convertir la salida de shell de Linux a HTML?

Cómo encontrar una cadena en un archivo en Linux

Cómo buscar y reemplazar texto, palabra o cadena en un archivo

Cómo encontrar la longitud de la cadena en Bash [Consejo rápido]

adb:Encuentra PID desde el shell de adb

¿Diferencia entre '{}' y {} en el comando de búsqueda?

bash - encuentra la posición del índice de cadena de la subcadena