आप इस्तेमाल कर सकते हैं 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