GNU/Linux >> Tutoriales Linux >  >> Linux

Números de relleno cero a 2 dígitos con sed

Otra solución:awk '{$2 = sprintf("%02d", $2); print}'


$ sed 's/\<[0-9]\>/0&/' ./infile
201103 01 /mnt/hdd/PUB/SOMETHING
201102 07 /mnt/hdd/PUB/SOMETH ING
201103 11 /mnt/hdd/PUB/SO METHING
201104 03 /mnt/hdd/PUB/SOMET HING
201106 01 /mnt/hdd/PUB/SOMETHI NG

Aquí hay una forma (no sed) de usar bash con regex extendido ..
Este método permite que el alcance realice un procesamiento más complejo de líneas individuales. (es decir, más que solo sustituciones de expresiones regulares)

while IFS= read -r line ; do
    if [[ "$line" =~ ^(.+\ )([0-9]\ .+)$ ]]  
    then echo "${BASH_REMATCH[1]}0${BASH_REMATCH[2]}" 
    else echo "$line"
    fi
done <<EOF
201103 1 /mnt/hdd/PUB/SOMETHING
201102 7 /mnt/hdd/PUB/SOMETH ING
201103 11 /mnt/hdd/PUB/SO METHING
201104 3 /mnt/hdd/PUB/SOMET HING
201106 1 /mnt/hdd/PUB/SOMETHI NG
EOF

salida:

201103 01 /mnt/hdd/PUB/SOMETHING
201102 07 /mnt/hdd/PUB/SOMETH ING
201103 11 /mnt/hdd/PUB/SO METHING
201104 03 /mnt/hdd/PUB/SOMET HING
201106 01 /mnt/hdd/PUB/SOMETHI NG

Linux
  1. sed con cadena literal, no archivo de entrada

  2. Usando sed para dividir una cadena con un delimitador

  3. Redondear números con bc en Bash

  4. Ordenar números con múltiples decimales en bash

  5. ¿Cómo reemplazar recursivamente los caracteres con sed?

Reemplace las comillas tipográficas con el comando sed de Linux

Usando múltiples patrones a la vez con el comando Sed

¿Cómo lograr la portabilidad con Sed -i (edición en el lugar)?

Adición Con 'sed'?

Uso del comando sed de Linux con ejemplos

Cómo eliminar el carácter \r con sed