Tengo esta pregunta en una tarea. Nada funciona. ¿Alguien puede ayudarme?
Escriba un script sed que reemplace todos los nombres con una alternativa,
busca todas las palabras que:
- Comience con una capital,
- Más de dos letras
- Donde hay un espacio en blanco frente a él y
- El carácter antes del espacio en blanco no es una puntuación que termina una oración.
Reemplace esas palabras en "Derp" + los dos últimos caracteres de la palabra.
sed
find-and-replace
Jleeeeny
fuente
fuente
Respuestas:
Esto es bastante incómodo de hacer en sed, pero aquí hay una versión que puede funcionar siempre que haya un personaje (elegí
%
) que nunca aparecerá en la entrada. El personaje se usa para marcar.Digamos que tiene un archivo de texto llamado
words
con los siguientes contenidos:El siguiente
bash
script hará el trabajo:El resultado de lo anterior será (separé cada uno por una nueva línea):
Así es como funciona:
%
. Por lo tanto, por ejemplo, se marcaráLatch
como% Latch
. Tenga en cuenta el espacio, llamaré a esta palabra espacial..
,!
o?
- se puede añadir otros, como)
, o como si es necesario)Derp
transformación real , es decir, reemplazará todas las palabras espaciales marcadas%
conDerpXX
,XX
siendo los dos últimos caracteres de esa palabra espacial.Tenga en cuenta que hay tecnicismos que no se abordaron aquí, como:
Être
)Oceans
de"Oceans Eleven"
considerar una palabra a pesar de que tiene"
delante?)y así.
Para que sea puramente un
sed
script, solo concatena:Obviamente, en el mundo real, no usaría
sed
para hacer tareas como esta. Por otra parte, probablemente tampoco tendría tareas como esta ... :)fuente
Esto podría funcionar para usted:
fuente