คุณสามารถใช้sed
's 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 stuff >>> bar bar
foo มากขึ้น >>> บาร์มากขึ้น
./file2:
./file3:
foo first >>> บาร์ก่อน
ที่สาม: foo >>> สาม: บาร์
for x in `find . -type f`; do echo ///File $x: ; sed --quiet 's/abc/def/gp' $x; done