GNU/Linux >> Tutoriels Linux >  >> Linux

Remplir à zéro les nombres à 2 chiffres avec sed

Autre solution :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

Voici une façon (non-sed) d'utiliser bash avec regex étendu ..
Cette méthode permet d'effectuer un traitement plus complexe des lignes individuelles. (c'est-à-dire plus que de simples substitutions de regex)

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

sortie :

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. Manipulation de texte en ligne de commande avec sed

  2. Utilisation de plusieurs modèles à la fois avec la commande Sed

  3. Supprimer tous les commentaires C avec Sed ?

  4. Coloriser la sortie de queue avec Sed ?

  5. Remplacer un mot par un autre en bash

Ajout avec "sed" ?

Utiliser Sed avec des caractères spéciaux ?

Extraire la sous-chaîne selon Regexp avec Sed ou Grep ?

Utilisation de la commande Linux sed avec des exemples

Comment supprimer le caractère \r avec sed

Expression régulière avec sed