GNU/Linux >> Znalost Linux >  >> Linux

Použít Sed k nahrazení řetězce řetězcem obsahujícím název adresáře (tj. lomítko „/“)?

Vím, že už se to tu ptalo, ale mám problém porozumět odpovědím, které jsem našel. V zásadě chci použít

sed -i 's/string//some/directory/g' file.txt

a nemůžu najít přímou odpověď na to, jak vytvořit /some/directory nerozbít sed syntaxe.

Přijatá odpověď:

sed umožňuje několik oddělovačů syntaxe, / je pouze ten nejběžněji používaný.

Stejně dobře můžete říci

sed -i 's,<string>,<some/directory>,g' file.txt

kde , nyní má funkci, kterou obvykle provádí / , čímž se to druhé zbaví jeho zvláštního významu.

Všimněte si však (jak poukázal @Jeff Schaller), že nyní , se nesmí objevit v názvu souboru nebo adresáře – a je to platný znak pro názvy souborů! Tato odpověď poskytuje dobrý přehled o tom, jak postupovat při aplikaci sed na řetězec se speciálními znaky.


Linux
  1. Najít a nahradit sed v adresáři a podadresářích

  2. Nahraďte slovo jiným v bash

  3. Použití sed k rozdělení řetězce s oddělovačem

  1. Nahraďte chytré uvozovky příkazem sed pro Linux

  2. Jak rekurzivně nahradit znaky sed?

  3. nahradit řádky v jednom souboru řádky v jiném číslem řádku

  1. Jak použít Sed k výměně víceřádkového řetězce?

  2. Kdy bych měl použít koncové lomítko v adresáři?

  3. Linux – Je lomítko (/) součástí názvu kořenového adresáře Linuxu?