Saltar al contenido

Encuentra palabras repetidas en un texto

Solución:

Con GNU grep:

echo 'Hi! Hi, same word twice twice, as as here here! ! ,123 123 need' |  grep -Eo '(b.+) 1b'

Producción:

twice twice
as as
here here
123 123

Opciones:

-E: Interpretar (b.+) 1b como una expresión regular extendida.

-o: Imprima solo las partes coincidentes (no vacías) de una línea coincidente, con cada parte en una línea de salida separada.

Regex:

b: Es un límite de palabra de ancho cero.

.+: Coincide con uno o más caracteres.

1: Los paréntesis () marcar un grupo de captura y 1 significa usar aquí el valor del primer grupo de captura.


Referencia: Preguntas frecuentes sobre expresiones regulares de desbordamiento de pila

Parece que algo como esto es lo que quieres (usando cualquier awk en cualquier shell en cada caja de UNIX):

$ cat tst.awk
BEGIN { RS=""; ORS="nn" }
{
    head = prev = ""
    tail = $0
    while ( match(tail,/[[:alpha:]]+/) ) {
        word = substr(tail,RSTART,RLENGTH)
        head = head substr(tail,1,RSTART-1) (word == prev ? "" : word)
        tail = substr(tail,RSTART+RLENGTH)
        prev = word
    }
    print head tail
}

$ cat file
the quick quick brown
fox jumped jumped
jumped over the lazy
lazy dogs back

$ awk -f tst.awk file
the quick  brown
fox jumped
 over the lazy
 dogs back

pero, por favor, haga una nueva pregunta con una muestra de entrada y salida esperada más verdaderamente representativa, incluida la puntuación, las diferencias en el uso de mayúsculas, varios párrafos, palabras duplicadas al principio / final de las oraciones y se muestran varios otros casos no triviales.

¡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 *