Mam taky pocit, ze priklad :
Zmenit uživatel:heslo:UID:GID:vlastní jméno:...
na <A HREF="/~uživatel">vlastní jméno</A>
Kýženým substitučním příkazem, který to zařídí, je
s/\([^:]*\):\([^:]*:\)\{3\}\([^:]*\).*/<A HREF="/~\1">\3<\/A>/
Mam ale pocit, ze / za HREF=" je chapani systemom ako koniec regexpu, ze ktory sa ma nahradit, takze potom dalsie veci za tym mu uz nedavaju zmysel. Aspon co som to ja skusal, tak to vypisalo chybu. Ale urcite ide prikaz:
sed 's%\([^:]*\):\([^:]*:\)\{3\}\([^:]*\).*%<A HREF="/~\1">\3<\/A>%' /etc/passwd
kde sme / zamenili za %, co mozeme.
Aby nezustalo jen u palindromu a jinych zbytecnosti: prakticke uziti zapamatovani je ve zdrojovych textech s parovymi znackami, napr. u xml souboru lze vyhledat retezce <(.*)>.*<\/\1>, coz je vlastne tag s pocatecni a koncovou znackou vcetne obsahu tagu. Jinych prikladu parovych znacek se najdou jiste mraky.
Dobry den ak som pochopil spravne clanok tak vsetko co uzavriem medzi \( a ) by si mal grep zapamatat, pod cislami od \1 po \9 moja otazka teda znie ako si z regularneho vyrazu vytiahnem zapamatane casti \1 a \2
grep -o "^\([^:]*):[^:]*:\([^:]*)" /etc/passwd
skusal som nieco ako:
grep -o "^\([^:]*):[^:]*:\([^:]*)\1\2" /etc/passwd ale nic sa nestalo
proste chcem vytiahnut len meno a UID z /etc/passwd
Dakujem