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

Komentáře

  • Chcete sed, ne grep. Také ' používáte " smart " uvozovky, takže grep bude hledat doslovný řetězec “string” včetně uvozovek. Chcete "string" (nebo pravděpodobně ještě lepší, 'string', pokud ve vyhledávacím dotazu neplánujete použití rozšíření parametrů).
  • grep není použit ' k nahrazení řetězců. Používá se ' k vyhledání řetězců. Chcete-li je nahradit, potřebujete sed nebo awk.
  • Bylo by to něco jako
  • sed –recursive –ignore-case " řetězec ", " nahrazení -string "
  • Související: hledat a nahrazovat pomocí grep (ne sed) – nicméně můžete použít grep --recursive --files-with-matches k vytvoření seznamu názvů souborů, které mají být předány sed

Odpověď

Zkuste tento příkaz

grep -rl "wavbyte" somedir/ | xargs sed -i "s/wavbyte/gitship/g" 

Můžete zkuste find a sed

find /some_path -type f -exec sed -i "s/oldstring/newstring/g" {} \; 

komentáře

  • Nahradím " matchstring " novým nebo starým řetězcem a co když chci udělat to z kořenového adresáře serveru?
  • Například když nahrazuji " wavbyte " s " gitship " od kořenový adresář serveru Ubuntu by to byl:
  • find / -type f -exec sed -i ' s / wavbyte / gitship / g ' {} \;
  • Správně, ale wavbyte je na serveru na mnoha různých místech. Jak si zapamatuji všechna tato místa a poté ručně vstoupím a přejdu na gitship?
  • Pojďme pokračovat v této diskusi v chatu .

Napsat komentář

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