Komentáře
- tldp.org/LDP/abs/html/x23170.html
- grymoire.com/Unix/Sed.html
- Nemělo by to být označeno jako duplikát, protože druhá odkazovaná odpověď ' neukážeme vám, jak nahradit jeden soubor, zatímco tato odpověď ano. Buď to, nebo integrovat tuto odpověď do této
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 souborfoo
je zálohován jakofooe
. - 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.