[email protected]:~$ echo 'replace A please' | sed 's/^\(.\{8\}\).\(.*\)/\1B\2/'
replace B please
Powyższe polecenie sed zastępuje znak 8. znak bez względu na to, co to jest, dlatego nie trzeba określać, co aracter ma zostać zastąpiony.
W powyższym kodzie po prostu trzeba wymienić
- 8 z pozycji znaku chcesz
- B z charakterem, co ma zastąpić!
Więc dla konkretnego przykładu staje:
[email protected]:~$ echo '...............' | sed 's/^\(.\{4\}\).\(.*\)/\1A\2/'
....A..........
Nie wspominając, że można zastąpić sznurkiem, zapewniając ciąg zamiast B lub po prostu usunąć, nie oferując niczego gdzie B jest (\1\2
)
+1. Rzeczywiście, sed jest właściwym narzędziem. Na marginesie ta konkretna wersja działa tylko wtedy, gdy wejściowy ciąg składa się z "." – CodeExpress
Nie, właściwie '.' nie reprezentuje znaku" kropka ", ale pasuje do wszystkich postaci. Gdybym chciał dopasować kropkę, napisałbym "\." – jurgemaister
hah, nie zdawałem sobie z tego sprawy, kiedy to napisałem. To jest idealne! – CodeExpress