Hier ist mein Befehl (absichtlich brechen):
grep FOO "/Users/gjtorikian/blah" -l | xargs sed -i '' '/FOO/{s/FOO/BAR/g; w /dev/stdout
}'
Auf hoher Ebene: grepfür FOO im blahVerzeichnis; Pipe in nur den Dateinamen (wegen -l) zu sed; sedführt ein Inline-Ersetzen ( -i '') durch und druckt nur den geänderten Begriff an /dev/stdout.
Wenn ich das -lund die Pipe weglassen würde , bekomme ich dies zurück von grep:
/Users/gjtorikian/blah/baz.cs:1:FOO
/Users/gjtorikian/blah/bar.js:1:FOO
Ich möchte seddas Inline-Ersetzen durchführen und mir dann die ersetzte Datei und den ersetzten Begriff anzeigen. zum Beispiel:
/Users/gjtorikian/blah/baz.cs:1:BAR
/Users/gjtorikian/blah/bar.js:1:BAR
Ist so etwas möglich? Wenn es darauf ankommt, würde ich es vorziehen, es nur mit grep/ zu behalten sed. Muss ich eine Sekunde grepnach dem machen sed?
'', das ist die Standardeinstellung.
''ist dies nicht die Standardeinstellung.