Použití ' sed ' k nalezení a nahrazení [duplicate]

Tato otázka již má odpovědi zde :

Komentáře

Odpovědět

sed je s tok ed itor v tom, že můžete použít | (pipe) k odeslání standardních streamů (konkrétně STDIN a STDOUT) prostřednictvím sed a průběžně je programově upravovat, což z něj činí praktický nástroj v unixové filozofické tradici; ale může také upravovat soubory přímo pomocí níže uvedeného parametru -i.
Zvažte následující :

 sed -i -e "s/few/asd/g" hello.txt  

s/ slouží k s ubstituci nalezeného výrazu few pomocí asd:

Těch pár, odvážných.


Asd , odvážný.

/g je zkratka pro „global“, což znamená udělat to pro celý řádek. Pokud vynecháte /g (s s/few/asd/, vždy musí existovat tři lomítka bez ohledu na to) a few se objeví dvakrát na stejném řádku, pouze první few se změní na asd:

Těch pár mužů, pár žen, odvážných.


Asd muži, pár žen, odvážných.

To je užitečné za určitých okolností, jako je změna speciálních znaků na začátku řádků (například nahrazení symbolů větších než, které někteří lidé používají k citování předchozího materiálu v e-mailových vláknech) s vodorovnou záložkou, zatímco ponecháte citovanou algebraickou nerovnost později v řádku nedotčenou), ale ve vašem příkladu, kde určíte, že kdekoli few by mělo být nahrazeno , ujistěte se, že máte /g.

Následující dvě možnosti (příznaky) jsou sloučeny do jedné, :

-i možnost se používá k úpravám i n místo v souboru hello.txt.

-e volba označuje e xpression / příkaz ke spuštění, v tomto případě s/.

Poznámka: Je důležité použít -i -e k hledání / nahrazení. Pokud -ie vytvoříte zálohu každého souboru s připojeným písmenem „e“.

Komentáře

  • I ' m používám OS X, z čeho to ' stojí, ale to je chyba, kterou dostávám: sed: 1: " hello.txt ": neplatný kód příkazu.
  • Byla navržena úprava pro přidání -e vlajka sed. Příznak -e je volitelný, pokud se příkaz k provedení zobrazí jako první, neexistuje příkazový soubor a příkaz arg a existuje pouze jeden příkaz.
  • @roo v systému Mac os x, použití -ie Tento soubor foo je zálohován jako fooe.
  • tento příkaz mi dává další soubor končící na -e, proč ??: index.html-e sed -i -e ' s / n / d / g ' index.html
  • V systému Mac vytvoří -i -e nový soubor s -e připojeným k názvu. Zdá se, že to funguje v bash: sed " -i " " " " -e " " s / few / asd / g " " nějaký soubor.xml "

odpověď

sed -i "s/fea/asd/g" hello.txt 

g: Globální

s: náhražka

-i : realtime pracuje se souborem inplace

Komentáře

  • Při práci se symbolickými odkazy je dobré přidat --follow-symlinks jinak -i změní symbolický odkaz na (upravenou) kopii souboru.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *