Memasukkan:
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
Output yang diinginkan:
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
Bagaimana saya bisa menambahkan 0
jika hanya ada satu digit, misalnya 1
di bagian "hari"? Saya memerlukan format tanggal ini: YYYYMM DD.
\<[0-9]\>
konstruk yang saya pikir adalah orang yang bertanggung jawab untuk mencocokkan satu digit tetapi tidak yakin apa yang disebut konstruk ini. Terima kasih.&
dalam string pengganti akan menggunakan LHS yang cocok -sed 's/\<[0-9]\>/0&/'
<>
adalah batas kata dalam sintaks shell regex. Kalau dipikir-pikir, bahkan `sed 's / \ b [0-9] \ b / 0 & /' juga berfungsi. Terima kasih semuanya. :)<>
adalah fitur regex yang diperluas (bukan dari shell, dengan demikian) ... tergantung pada versi dan opsi mana yang Anda gunakan,sed
danshell
keduanya dapat menggunakan regex yang diperluas atau standar ... regex standar yang digunakan\<\>
Solusi lain:
awk '{$2 = sprintf("%02d", $2); print}'
sumber
Berikut ini adalah cara (non-sed) untuk menggunakan bash dengan regex yang diperluas .
Metode ini, memungkinkan ruang lingkup untuk melakukan pemrosesan garis individual yang lebih kompleks. (mis. lebih dari sekadar penggantian regex)
keluaran:
sumber
Saya akan melakukan sesuatu seperti ini:
Ini mengambil angka-angka kesepian, strip mereka dari spasi putih dengan grup
' ([0-9]) '
, kemudian tempatkan kembali dengan 0 dan spasi putih' 0\1 '
.The
-E
pilihan memungkinkan untuk ekspresi regex modern pada OSX (sehingga Anda tidak harus menggunakan"\"
begitu sering),-r
melakukan hal yang sama pada sistem linux yang sudah saya uji.sumber
sumber