GNU/Linux >> Znalost Linux >  >> Linux

Příkaz sed s volbou -i selže na Macu, ale funguje na Linuxu

Věřím, že v OS X je při použití -i vyžadováno rozšíření pro záložní soubory . Zkuste:

sed -i .bak 's/hello/gbye/g' *

Pomocí GNU sed rozšíření je volitelné .


Pokud použijete -i musíte poskytnout rozšíření pro vaše zálohy.

Pokud máte:

File1.txt
File2.cfg

Příkaz (všimněte si nedostatku mezery mezi -i a '' a -e aby to fungovalo na nových verzích Macu a GNU):

sed -i'.original' -e 's/old_link/new_link/g' *

Vytvořte 2 záložní soubory jako:

File1.txt.original
File2.cfg.original

Neexistuje žádný přenosný způsob, jak se vyhnout vytváření záložních souborů, protože je nemožné najít kombinaci příkazů sed, která by fungovala ve všech případech:

  • sed -i -e ... - nefunguje na OS X, protože vytváří -e zálohy
  • sed -i'' -e ... - nefunguje na OS X 10.6, ale funguje na 10.9+
  • sed -i '' -e ... - nefunguje na GNU

Poznámka Vzhledem k tomu, že příkaz sed nefunguje na všech platformách, můžete zkusit použít jiný příkaz, abyste dosáhli stejného výsledku.

Např. perl -i -pe's/old_link/new_link/g' *


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

  2. Linux Tee Command s příklady

  3. Jak používat Sed Command v Linuxu s příklady

  1. Příkaz linuxové hlavy s příklady

  2. JQ Command v Linuxu s příklady

  3. Existuje linuxový příkaz jako mv, ale s regulárním výrazem?

  1. wc Linux Command s příklady

  2. Linux řazení příkazů s příklady

  3. Echo Command v Linuxu (s příklady)