GNU/Linux >> Belajar Linux >  >> Linux

Isi nol angka menjadi 2 digit dengan sed

Solusi lain: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

Ini adalah cara (non-sed) untuk menggunakan bash dengan ekstensi regex ..
Metode ini, memungkinkan ruang lingkup untuk melakukan pemrosesan baris individu yang lebih kompleks. (mis. lebih dari sekadar penggantian 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

keluaran:

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. Menggunakan beberapa pola sekaligus dengan perintah Sed

  2. Menghapus Semua Komentar C Dengan Sed?

  3. Menggunakan Sed Dengan Karakter Khusus?

  1. Mewarnai Keluaran Ekor Dengan Sed?

  2. Ganti kata dengan yang lain di bash

  3. sed dengan string literal - bukan file input

  1. Menyortir angka dengan banyak desimal di bash

  2. Bagaimana cara mengganti karakter dengan sed secara rekursif?

  3. Ekspresi reguler dengan sed