GNU/Linux >> Znalost Linux >  >> Linux

Použití příkazů Sed,ex a perl k vyhledání a nahrazení textu v Linuxu

Otázka:  Chtěl bych nahradit text odkazem v kotevní značce souboru html. Problém je v tom, že projekt obsahuje stovky takových HTML souborů a ruční nahrazení textu ve všech těchto souborech není chytrý způsob, jak to udělat. Otázka tedy zní, jak mohu udělat totéž pomocí jediného příkazu v Linuxu?

Řešení:

Pomocí sed příkaz v Linuxu:

sed -i 's/#\(.*logo\)/domain.ca\1/' $file

Výše uvedený příkaz hledá řádek, který obsahuje vzor logo a nahradí „#“ odkazem (např. doména.ca)

Můžete také předat více souborů pro výše uvedený příkaz, jak je znázorněno níže.

Další variantou výše uvedeného příkazu je:

sed -i '/logo.png/ s/#/domain.ca/' *.html

Pomocí perlu příkaz:

perl -i -pe 's/#/domain.ca/ if /logo.png/' about-us.html

Příkaz je velmi přímočarý – prohledejte text a nahraďte jej určitým řetězcem tehdy a pouze tehdy, když najde odpovídající řetězec na daném řádku souboru.

Všechny výše uvedené příkazy dělají stejnou práci, ale liší se pouze tím, jak zadáte svůj regulární výraz.

Používejte Vim v ex režim (nelze použít s více soubory):

ex -sc '/logo/s/#/http:\/\/domain.ca\//|x' about-us.html

Ve výše uvedeném příkazu regulární výraz ‘/logo/s/#/http:\/\/domain.ca\//|x ‚sestává z ‚s‘ a ‚x‘ – kde ‚s‘ zastupuje a ‚x‘ je pro uložení a zavření souboru.

Poznámka:Výše ​​uvedený příkaz používá vim , nemůžete předat více souborů. Tento příkaz musíte provést ručně pro každý soubor, který má být nahrazen.


Linux
  1. Linuxové příkazy – přehled a příklady

  2. Jak napsat text na obrázek pomocí příkazu Linux

  3. Rekurzivní vyhledávání a nahrazování v textových souborech na Macu a Linuxu

  1. Příkaz Linux Sed:Použití a příklady

  2. Linuxové příkazy:jobs, bg a fg

  3. Použití sed k nalezení a nahrazení textových souborů v Linuxu

  1. Pomocí „sed“ najít a nahradit?

  2. Použití grep a sed k nalezení a nahrazení řetězce

  3. najít a odstranit soubory s mezerou pomocí příkazu find v Linuxu