Wejście:
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
Pożądane wyjście:
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
Jak dodać 0
cyfrę, jeśli jest tylko jedna cyfra, np. 1
W części „dzień”? Potrzebuję tego formatu daty: RRRRMM DD.
\<[0-9]\>
konstrukt, który moim zdaniem odpowiada za dopasowanie pojedynczych cyfr, ale nie jestem pewien, jak nazywa się ten konstrukt. Dzięki.&
w ciągu zastępującym użyje dopasowanego LHS -sed 's/\<[0-9]\>/0&/'
<>
jest to granica słowa w składni wyrażenia regularnego powłoki. Pomyśl o tym, nawet `sed 's / \ b [0-9] \ b / 0 & /' również działa. Dziękuję wam obu. :)<>
jest funkcją rozszerzonego wyrażenia regularnego (nie powłoki, jako takiej) ... w zależności od wersji i używanych opcji,sed
ishell
oba mogą używać rozszerzonego lub standardowego wyrażenia regularnego ... standardowe wyrażenia regularne\<\>
Inne rozwiązanie:
awk '{$2 = sprintf("%02d", $2); print}'
źródło
Oto (nie-sed) sposób użycia basha z rozszerzonym wyrażeniem regularnym .
Ta metoda pozwala na bardziej złożone przetwarzanie poszczególnych linii. (tj. więcej niż tylko podstawienia wyrażeń regularnych)
wynik:
źródło
Zrobiłbym coś takiego:
To pobiera samotne liczby, usuwa je z grupy z białymi spacjami
' ([0-9]) '
, a następnie umieszcza je z powrotem z 0 i dopełnianiem białych znaków' 0\1 '
.Ta
-E
opcja pozwala na nowoczesne wyrażenia RegEx na OSX (więc nie musisz"\"
tak często używać ),-r
robi to samo na testowanych przeze mnie systemach Linux.źródło
źródło