Un'altra soluzione: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
Ecco un modo (non sed) di usare bash con espressione regolare estesa ..
Questo metodo consente all'oscilloscopio di eseguire elaborazioni più complesse di singole righe. (vale a dire più che semplici sostituzioni 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
uscita:
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