आप इस्तेमाल कर सकते हैं sedकी wकिसी के साथ झंडा /dev/stderr, /dev/tty, /dev/fd/2आपके सिस्टम पर समर्थित है। जैसे इनपुट के fileसाथ:
foo first
second: missing
third: foo
none here
चल रहा है
sed -i '/foo/{
s//bar/g
w /dev/stdout
}' file
आउटपुट:
bar first
third: bar
हालांकि fileसामग्री को बदल दिया गया था:
bar first
second: missing
third: bar
none here
तो आपके मामले में, चल रहा है:
find . -type f -printf '\n%p:\n' -exec sed -i '/foo/{
s//bar/g
w /dev/fd/2
}' {} \;
फ़ाइलों को जगह और आउटपुट में संपादित करेगा:
./file1:
बार सामान
अधिक बार
./file2:
./file3:
पहले बार
तीसरा: बार
आप original line >>> modified lineजैसे कुछ प्रिंट भी कर सकते हैं :
find . -type f -printf '\n%p:\n' -exec sed -i '/foo/{
h
s//bar/g
H
x
s/\n/ >>> /
w /dev/fd/2
x
}' {} \;
फ़ाइलों को स्थान और आउटपुट में संपादित करता है:
./file1:
फू सामान >>> बार सामान
अधिक foo >>> अधिक बार
./file2:
./file3:
फू पहले >>> बार पहले
तीसरा: फू >>> तीसरा: बार
for x in `find . -type f`; do echo ///File $x: ; sed --quiet 's/abc/def/gp' $x; done