GNU/Linux >> Znalost Linux >  >> Linux

Substituce proměnné prostředí v sed

Kromě odpovědi Normana Ramseyho bych rád dodal, že můžete celý řetězec uvozovat dvakrát (což může učinit prohlášení čitelnějším a méně náchylným k chybám).

Pokud tedy chcete vyhledat 'foo' a nahradit jej obsahem $BAR, můžete příkaz sed uzavřít do dvojitých uvozovek.

sed 's/foo/$BAR/g'
sed "s/foo/$BAR/g"

V prvním se $BAR nerozbalí správně, zatímco v druhém $BAR se rozbalí správně.


Vaše dva příklady vypadají identicky, což ztěžuje diagnostiku problémů. Možné problémy:

  1. Možná budete potřebovat dvojité uvozovky, jako v sed 's/xxx/'"$PWD"'/'

  2. $PWD může obsahovat lomítko, v takovém případě musíte najít znak ne obsažené v $PWD použít jako oddělovač.

Abychom vyřešili oba problémy najednou, možná

sed '[email protected]@'"$PWD"'@'

Linux
  1. Povolené znaky v názvech proměnných prostředí Linux

  2. Nastavit proměnnou prostředí s prostorem v Linuxu

  3. Jak změnit jazyk mého git?

  1. Linux – trvalá proměnná prostředí pro všechny uživatele?

  2. variabilní dostupnost prostředí v Linuxu

  3. Nelze použít pole jako proměnnou prostředí

  1. Použití odkazu na proměnnou bashového řetězce v Sed?

  2. Jak odstraním exportovanou proměnnou prostředí?

  3. Proměnná prostředí TERM není nastavena