Buscar aquí

06 noviembre 2017

Cómo reemplazar solo una parte de los textos

Habitualmente, cuando se necesita reemplazar una parte de texto pequeña, no toda una palabra, por ejemplo, en una línea se tiene la hora con formato:

HH:MI:SS

por ejemplo:
cualquier texto, 23:59:57
otro texto cualquiera, 23:58:04
un texto mas cualquiera, 23:57:39
el texto cualquiera, 23:56:37

si interesara por ejemplo dejar solo lo correspondiente a la hora, algo así
cualquier texto, 23:00:00
otro texto cualquiera, 23:00:00
un texto mas cualquiera, 23:00:00
el texto cualquiera, 23:00:00

una forma util es usando sed:

sed 's/\(.*\)\([0-9][0-9]\):[0-9][0-9]:[0-9][0-9]/\1\2:00:00/'

traduciendo esto, en la parte del patrón a buscar:
1-  \(.*\) esto hace match con cualquier cosa
2- \([0-9][0-9]\) esto hace match, con un patrón que viene con dos números entre 0 y 9 cada uno.
3- :[0-9][0-9] esto hace match, con un patrón que viene un símbolo de dos puntos (:) seguido de dos números, entre 0 y 9 cada uno.
4- :[0-9][0-9] esto hace match, con un patrón que viene un símbolo de dos puntos (:) seguido de dos números, entre 0 y 9 cada uno.

Entonces el patrón buscaría:

Cualquier cosa, seguida de dos números  entre 0 y 9 cada uno, seguido del símbolo de dos puntos, seguido de dos números entre 0 y 9, seguido del símbolo de dos puntos, seguido de dos números entre 0 y 9.

El truco aquí es que en 1 y 2, el patrón está encerrado entre \( y \), esto indica que lo que haga match en ese patrón, será posible utilizarlo después.  Por ello, después en la segunda parte del sed, donde se indica con que se reemplazará, aparecen los \1 y \2, que indica lo obtenido en 1 y 2.


1 comentario:

  1. The Grand at The Grand at The Grand at The Grand at The
    Book now at The Grand at The 천안 출장마사지 Grand at The Grand at The Grand at The Grand at The 남원 출장마사지 Grand at The 문경 출장샵 Grand at The Grand 파주 출장안마 at The Grand at 성남 출장마사지 The Grand at The Casino

    ResponderBorrar