Chcę zapisać konkretną część dopasowanego wyniku jako zmienną, która ma być później użyta do zastąpienia. Chciałbym zachować to w jednej linijce, zamiast znaleźć potrzebną zmienną przed ręką.Używanie symboli zastępczych/zmiennych w poleceniu sed
podczas konfiguracji apache, a użycie mod_rewrite można specificy poszczególnych części wzorów do wykorzystania jako zmienne, podobnie jak to:
RewriteRule ^www.example.com/page/(.*)$ http://www.example.com/page.php?page=$1 [R=301,L]
część meczu wzór, który jest zawarty wewnątrz nawiasu są przechowywane 1 $ do wykorzystania później. Więc jeśli adres URL to www.example.com/page/home
, zostanie zastąpiony przez www.example.com/page.php?page=home
. Więc "domowa" część meczu została zapisana w 1 $, ponieważ była częścią wzorca wewnątrz nawiasu.
Chcę czegoś takiego jak ta funkcja z komendą sed
, potrzebuję automatycznie zastąpić wiele ciągów w pliku zrzutu SQL, aby dodać tabelę kropli, jeśli istnieją polecenia przed każdą tabelą tworzenia, ale muszę znać nazwę tabeli do zrobienia to, więc jeśli plik zrzutu zawiera coś takiego:
...
CREATE TABLE `orders`
...
trzeba uruchomić coś takiego:
cat dump.sql | sed "s/CREATE TABLE `(.*)`/DROP TABLE IF EXISTS $1\N CREATE TABLE `$1`/g"
aby uzyskać wynik:
...
DROP TABLE IF EXISTS `orders`
CREATE TABLE `orders`
...
Używam składni mod_rewrite w komendzie sed
jako logicznego przykładu tego, co próbuję zrobić.
Wszelkie sugestie?
Dziękuję za to wyjaśnienie, to całkowicie odpowiedział na moje pytanie. –