Oto prosty przykład:
$ echo 'abcabcabc' | sed 's/\(ab\)c/\1/'
ababcabc
$ echo 'abcabcabc' | sed 's/\(ab\)c/\1/g'
ababab
$ echo 'abcabcabc' | sed 's/\(ab\)\(c\)/\1d\2/g'
abdcabdcabdc
W pierwszym poleceniu tylko pierwszy mecz zostanie naruszona. W drugim poleceniu wpływ ma każdy mecz. W obu przypadkach \1
odnosi się do znaków przechwyconych przez ujęte w nawiasach nawiasy.
W trzecim poleceniu określono dwie grupy przechwytywania. Są one określane przy użyciu \1
i \2
. Można użyć do dziewięciu grup przechwytywania.
Oprócz (globalne) operatora g
(lub bez niego, pierwszy mecz), można określić konkretny mecz:
$ echo 'aaaaaa' | sed 's/a/A/4'
aaaAaa
Co to jest \\ 1, czy jest to rozszerzone wyrażenie regularne? – Timo
Oto przykład dla \\ 1: "sed -E -e" s/[^ /] {10} (\\. [^ \\.] +)? $/\\ 1/"' – Timo
@Timo : '\ 1' wstawia zawartość pierwszej grupy przechwytywania, która jest zgodna z pierwszym zestawem nawiasów. Nie wiem, czy pytasz w szczególności o sprawę z podwójnymi ukośnikami, ale wydaje się, że działa, czy są podwojone, czy nie. Nie powiedziałbym, że jest to przypadek rozszerzonego wyrażenia regularnego, ponieważ robi to samo, nawet jeśli używasz podstawowego wyrażenia regularnego. –