Anda bisa menggunakan sed
's w
bendera dengan baik /dev/stderr
, /dev/tty
, /dev/fd/2
jika didukung pada sistem Anda. Misalnya dengan input file
seperti:
foo first
second: missing
third: foo
none here
berlari
sed -i '/foo/{
s//bar/g
w /dev/stdout
}' file
output:
bar first
third: bar
meskipun file
konten diubah menjadi:
bar first
second: missing
third: bar
none here
Jadi dalam kasus Anda, jalankan:
find . -type f -printf '\n%p:\n' -exec sed -i '/foo/{
s//bar/g
w /dev/fd/2
}' {} \;
akan mengedit file di tempat dan keluaran:
./file1:
barang bar
lebih banyak bar
./file2:
./file3:
bar dulu
ketiga: bar
Anda juga dapat mencetak sesuatu seperti original line >>> modified line
misalnya:
find . -type f -printf '\n%p:\n' -exec sed -i '/foo/{
h
s//bar/g
H
x
s/\n/ >>> /
w /dev/fd/2
x
}' {} \;
edit file di tempat dan keluaran:
./file1:
hal-hal foo >>> hal-hal bar
lebih banyak foo >>> lebih banyak bar
./file2:
./file3:
foo dulu >>> bilah dulu
ketiga: foo >>> ketiga: bar
for x in `find . -type f`; do echo ///File $x: ; sed --quiet 's/abc/def/gp' $x; done