Bạn có thể sử dụng sed
's w
cờ với một trong hai /dev/stderr
, /dev/tty
, /dev/fd/2
nếu được hỗ trợ trên hệ thống của bạn. Ví dụ: với một đầu vào file
như:
foo first
second: missing
third: foo
none here
đang chạy
sed -i '/foo/{
s//bar/g
w /dev/stdout
}' file
đầu ra:
bar first
third: bar
mặc dù file
nội dung đã được thay đổi thành:
bar first
second: missing
third: bar
none here
Vì vậy, trong trường hợp của bạn, chạy:
find . -type f -printf '\n%p:\n' -exec sed -i '/foo/{
s//bar/g
w /dev/fd/2
}' {} \;
sẽ chỉnh sửa các tập tin tại chỗ và đầu ra:
./file1:
thanh công cụ
thêm thanh
./file2:
./file3:
thanh đầu tiên
thứ ba: thanh
Bạn cũng có thể in một cái gì đó như 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
}' {} \;
chỉnh sửa các tập tin tại chỗ và đầu ra:
./file1:
công cụ foo >>> công cụ thanh
thêm foo >>> thêm thanh
./file2:
./file3:
foo đầu tiên >>> thanh đầu tiên
thứ ba: foo >>> thứ ba: thanh
for x in `find . -type f`; do echo ///File $x: ; sed --quiet 's/abc/def/gp' $x; done