Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

250
Vistas
Reemplazar un dígito con otro dígito en bash

Estoy escribiendo un script bash en el que quiero reemplazar el primer dígito si es 0 con 92 y si no hay 0 ni 92, agregue 92 delante de ese dígito y guárdelo en un archivo nuevo.

Cualquier ayuda sería apreciada.

A continuación se muestra mi script bash:

chatarra.sh

 #!/bin/bash file=test.txt while IFS=, read -r field1 do echo $field1 | awk '$0*=1'>> test2.txt done < $file

prueba.txt

 03333333333 3848123249

Rendimiento esperado

 923333333333 923848123249
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Con solo la expansión de parámetros de bash:

 $ while IFS= read -r line; do printf '92%s\n' "${line#0}"; done < test.txt 923333333333 923848123249

${line#0} elimina un cero inicial solo si existe.

https://www.gnu.org/software/bash/manual/bash.html#Shell-Parameter-Expansion

over 4 years ago · Santiago Trujillo Denunciar

0

Con sus muestras mostradas, intente seguir el código awk .

 awk '{$0=substr($0,1,1)==0?"92" substr($0,2):"92" $0} 1' Input_file

Explicación: la explicación simple sería usar la función substr de awk para obtener subcadenas de la línea actual. En el programa principal de awk , reasignar valores a la línea actual ( $0 ) según las condiciones. Verificando la condición si el 1er carácter es 0 , luego haga que el valor de $0 sea 92 y el resto de la línea desde el 2do carácter DE LO CONTRARIO agregue 92 antes $0 . Finalmente, mencionar 1 imprimirá la línea actual editada/no editada.

over 4 years ago · Santiago Trujillo Denunciar

0

Suponiendo que este es su archivo de entrada:

 cat file 03333333333 92123456789 3848123249

Puedes usar este sed :

 sed -E '/^92/!s/0|^/92/' file 923333333333 92123456789 923848123249

detalles del comando sed :

  • /^92/! haz esto para las líneas que no comienzan con 92
  • /0|^/ : coincide con el primer 0 o la posición inicial de una línea
  • /92/ : Reemplazar con 92 en la posición de inicio

Un awk equivalente sería:

 awk '!/^92/ {sub(/0|^/, "92")} 1' file
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda