Czy ktoś może mi powiedzieć, co robią te dwa polecenia?
sed -i "s!{[^{]*;}! !" file.txt
sed -i "s!{[^{]*{! !" file.txt
Znalazłem ten przykład i nie mogę zrozumieć wyniku podanego podczas uruchamiania kodu.
Odpowiedzi:
0 dla odpowiedzi № 1sed -i "s!{[^{]*;}! !" file.txt
- sed -i oznacza na miejscu plik.txt może zostać zmieniony.
- „s! ....! ....! ”zastępuj polecenie, rozdzielaj wykrzyknikami. Najczęściej używasz ukośników, ale sed akceptuje różne znaki, zdefiniowane przez pierwszy po s. Pamiętaj, że wykrzykniki powodują problemy w powłoce. Ponieważ nie ma ukośnika, ani we wzorze, ani w zastępstwie, nie widzę powodu, aby z nich korzystać.
- {[^ {] *;} wzór do dopasowania
- W końcu podstawienie jest puste, jeśli zostanie przeniesione z ostrożnością, ale może to być tabulator, funky półprzestrzeni lub coś innego.
Jakie jest skomplikowane wyrażenie:
- {[^ {] *;} dosłowna para nawiasów klamrowych zawierających ...
- [^ {] grupa negacji, negacja polega na tym, że najpierw char jest „^”, więc wszystko, co nie jest otwierającym, nawiasami klamrowymi, po którym następuje
- kwantyfikator *, oznaczający dowolną liczbę, w tym 0, po której następuje
- backspace, który tak często jak narzędzie maskujące.
- i średnik.
Więc
- „{aaaaa;}” powinno pasować
- „{a;}” powinno pasować
- "{;}" powinno pasować
- "{};}" powinno pasować
- „{{;}” nie powinno się zgadzać
- „{a}” nie powinno się zgadzać
- „{a}” nie powinno się zgadzać