Deze vraag heeft hier al antwoorden :
Reacties
- Je wilt sed, niet grep. Bovendien gebruikt u ' " smart " 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 jesed
ofawk
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 aansed
Answer
Probeer dit commando
grep -rl "wavbyte" somedir/ | xargs sed -i "s/wavbyte/gitship/g"
Je 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 dat zijn:
- find / -type f -exec sed -i ' s / wavbyte / gitship / g ' {} \;
- Juist, 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 naar gitship veranderen?
- Laten we deze discussie voortzetten in de chat .