GNU/Linux >> Znalost Linux >  >> Linux

Jak použít sed k nahrazení proměnné konfiguračního souboru?

Můžete zkusit tento sed:

sed -i.bak 's/^\(VAR5=\).*/\1VALUE10/' file

To dává:

VAR1=VALUE1
VAR2=VALUE2
VAR3=VALUE3
VAR4=VALUE4
VAR5=VALUE10
VAR6=VALUE6

I když k otázce byla přidána odpověď. Strávil jsem nějaký čas tím, jak to funguje, rád bych přidal některá fakta a svou verzi odpovědi,

sed -i 's,^\(THISISMYVARIABLE[ ]*=\).*,\1'THISISMYVALUE',g' config.cfg

Vysvětlení:

  • Jako základ sed 's/find_this/replace_with/' , říkáme sed hledat a nahradit. Nezapomeňte také, že existuje několik dalších oddělovačů, které můžeme použít místo / . Zde , se používá.
  • Zde najdeme řádek, který odpovídá ^\(THISISMYVARIABLE[ ]*=\).* . To znamená, že seskupujeme shodu THISISMYVARIABLE[ ]*= . ([ ]* zakrýt, pokud jsou za klávesou mezery)
  • V části nahradit \1 je zpětná reference. Odkazujeme na první skupinu v regulárním výrazu, který jsme použili pro shodu.

Můžete říct:

sed '/^VAR5=/s/=.*/=VALUE10/' filename

Chcete-li provést změnu v souboru na místě , použijte -i možnost:

sed -i '/^VAR5=/s/=.*/=VALUE10/' filename

Linux
  1. Jak nahradit řetězec v souboru (souborech)?

  2. Jak použít Sed k výměně víceřádkového řetězce?

  3. Jak použít Sed nebo Ex k nahrazení bloku (víceřádkového kódu) novým blokem textu (kódu)?

  1. Jak používat typ souboru ve Vimu?

  2. Jak použít chmod ke změně oprávnění k souboru?

  3. Jak nahradit text podobný sedu pythonem?

  1. Jak použít sed k odstranění posledních n řádků souboru

  2. sed:jak nahradit řádek, pokud byl nalezen, nebo připojit na konec souboru, pokud nebyl nalezen?

  3. Jak rekurzivně nahradit znaky sed?