Ruby regex que coincide con una línea en una cadena de archivo de texto ingresado

Necesito hacer coincidir una línea en una cadena de archivo de texto ingresada y envolver esa línea capturada con un carácter, por ejemplo.

Por ejemplo imagina un archivo de texto como tal:

test foo test bar 

Me gustaría usar gsub para la salida:

 XtestX XfooX XtestX XbarX 

Aunque estoy teniendo problemas para hacer coincidir una línea. He intentado usar expresiones regulares comenzando con ^ y terminando con $, pero ¿parece que no funciona? ¿Algunas ideas?

Tengo un archivo de texto que tiene lo siguiente:

 test foo test bag 

El archivo de texto se está leyendo como un argumento de línea de comandos.

Así que tengo (por ejemplo, simplemente tratando de envolver la prueba)

 string = IO.read(ARGV[0]) string = string.gsub(/^(test)$/,'X\1X') puts string 

Produce exactamente lo mismo que está en el archivo de texto.

He intentado

 string = string.gsub(/^(.*)$/, 'X\1X') 

Esto produce:

 Xtest Xfoo Xtest Xbar 

…¿por qué?

Está bien, así que hice una copia de la última línea del archivo de texto y ahora estoy obteniendo esto …

 Xtest Xfoo Xbar XtestX 

 string = "test\r\nfoo\r\ntest\r\nbar" string = string.gsub(/^test(?=\r?\n)/, 'X\&X').delete(?\r) puts string 

Funciona bien para mí en Ruboto IRB en mi teléfono. ¿Podría hacer un ejemplo de una línea autocontenido y publicarlo? Ningún archivo IO debería ser necesario. ¿Qué versión de Ruby usas?

Sospecho que su progtwig solo tiene un error tipográfico.

El problema se debe a las terminaciones de dos líneas (\ r \ n), por lo que para deshacerse de esto, hay un comando de cambio (en MAC, si estoy en lo cierto) para convertir las terminaciones de dos líneas en terminaciones de líneas mac (\ r). Búsquelo y convierta las terminaciones de dos líneas en terminaciones de líneas de mac antes de usar ese archivo de texto.