Deze vraag heeft hier al antwoorden :

Reacties

  • Je wilt sed, niet grep. Bovendien ' gebruikt u " slimme " aanhalingstekens, dus grep zoekt naar de letterlijke tekenreeks “string”, inclusief de aanhalingstekens. U wilt "string" (of waarschijnlijk nog beter 'string', tenzij u van plan bent om parameteruitbreiding in de zoekterm te gebruiken).
  • grep isn ' t gebruikt om strings te vervangen. Het ' wordt gebruikt om strings te vinden. Om ze te vervangen, heb je sed of awk nodig.
  • Zou het zoiets zijn als
  • sed –recursive –ignore-case " string ", " vervanging -string "
  • Gerelateerd: zoek en vervang met grep (niet sed) – echter je zou grep --recursive --files-with-matches kunnen gebruiken om een lijst met bestandsnamen samen te stellen die moeten worden doorgegeven aan sed

Antwoord

Probeer dit commando

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

U kunt probeer find en sed

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

Reacties

  • Vervang ik " matchstring " door de nieuwe of oude string en wat als ik wil om het te doen vanuit de root directory van de server?
  • Bijvoorbeeld als ik " wavbyte " met " gitship " van de root directory van de Ubuntu-server zou het zijn:
  • find / -type f -exec sed -i ' s / wavbyte / gitship / g ' {} \;
  • Klopt, maar wavbyte staat op veel verschillende plaatsen op de server. Hoe ga ik al die locaties onthouden en dan met de hand naar binnen gaan en overgaan op gitship?
  • Laten we deze discussie voortzetten in de chat .

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *