Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

167
Visualizações
Replace only the beginning of a line

I am struggling with a sed command. I am trying to achieve this:

Input: 03:23PM

Output: 15:23PM

My sed command which I have tried:

echo $line | sed 's/03:..PM/15:..PM/g

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

To remember part of the replacement test, use parentheses. To refer to the first pair of parentheses, use \1:

sed 's/03:\(..\)PM/15:\1PM/g'

In fact, you can make both the : and PM part of the capture group:

sed 's/03\(:..PM\)/15\1/g'
over 4 years ago · Santiago Trujillo Relatório

0

Using sed

$ sed '/[0-9:]*[AP]M/s/^[^:]*/15/' <<< $line
15:23PM

Or using @dawg solution to handle multiple ranges

sed "/PM/s/^[^:]*/echo \$((&+12))/e" <<< $line
15:23PM
over 4 years ago · Santiago Trujillo Relatório

0

I would use awk so you are getting actual addition and can detect AM vs PM:

echo '03:23PM
11:33PM
03:23AM' | awk 'BEGIN{FS=OFS=":"} /PM/ && $1<12 {$1=$1+12} 1'

Prints:

15:23PM
23:33PM
03:23AM
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda