Saltar al contenido

¿Cómo usar sed/grep para extraer texto entre dos palabras?

Mantén la atención porque en este artículo vas a hallar la solución que buscas.Esta reseña ha sido aprobado por nuestros especialistas para garantizar la calidad y veracidad de nuestro contenido.

Solución:

GNU grep también puede admitir la búsqueda anticipada y retrospectiva positiva y negativa: para su caso, el comando sería:

echo "Here is a string" | grep -o -P '(?<=Here).*(?=string)'

Si hay varias ocurrencias de Here y stringpuede elegir si desea hacer coincidir desde el principio Here y última string o emparejarlos individualmente. En términos de expresiones regulares, se denomina coincidencia codiciosa (primer caso) o coincidencia no codiciosa (segundo caso)

$ echo 'Here is a string, and Here is another string.' | grep -oP '(?<=Here).*(?=string)' # Greedy match
 is a string, and Here is another 
$ echo 'Here is a string, and Here is another string.' | grep -oP '(?<=Here).*?(?=string)' # Non-greedy match (Notice the '?' after '*' in .*)
 is a 
 is another 

sed -e 's/Here(.*)String/1/'

La respuesta aceptada no quita texto que podría estar antes Here o después String. Esta voluntad:

sed -e 's/.*Here(.*)String.*/1/'

La principal diferencia es la adición de .* inmediatamente antes Here y después String.

Si aceptas, puedes dejar un enunciado acerca de qué le añadirías a este tutorial.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *