Sie könnten nutzen sed
‚s w
Flagge mit entweder /dev/stderr
, /dev/tty
, /dev/fd/2
wenn auf Ihrem System unterstützt. ZB mit einer Eingabe file
wie:
foo first
second: missing
third: foo
none here
Laufen
sed -i '/foo/{
s//bar/g
w /dev/stdout
}' file
Ausgänge:
bar first
third: bar
obwohl der file
Inhalt geändert wurde in:
bar first
second: missing
third: bar
none here
Also in Ihrem Fall läuft:
find . -type f -printf '\n%p:\n' -exec sed -i '/foo/{
s//bar/g
w /dev/fd/2
}' {} \;
bearbeitet die Dateien direkt und gibt sie aus:
./Datei1:
Bar Zeug
mehr bar
./Datei2:
./Datei3:
Bar zuerst
drittens: bar
Sie könnten auch etwas wie original line >>> modified line
zB drucken :
find . -type f -printf '\n%p:\n' -exec sed -i '/foo/{
h
s//bar/g
H
x
s/\n/ >>> /
w /dev/fd/2
x
}' {} \;
bearbeitet die Dateien an Ort und Stelle und gibt Folgendes aus:
./Datei1:
Foo Stuff >>> Bar Stuff
mehr foo >>> mehr bar
./Datei2:
./Datei3:
Foo zuerst >>> Bar zuerst
drittens: foo >>> drittens: bar
for x in `find . -type f`; do echo ///File $x: ; sed --quiet 's/abc/def/gp' $x; done