Đây là lệnh của tôi (phá vỡ chủ ý):
grep FOO "/Users/gjtorikian/blah" -l | xargs sed -i '' '/FOO/{s/FOO/BAR/g; w /dev/stdout
}'
Ở cấp độ cao: grep
cho FOO trong blah
thư mục; ống chỉ trong tên tệp (vì -l
) đến sed
; sed
thực hiện thay thế nội tuyến ( -i ''
) và chỉ in thuật ngữ đã thay đổi thành /dev/stdout
.
Nếu tôi bỏ qua -l
đường ống và đường ống, tôi sẽ lấy lại từ grep
:
/Users/gjtorikian/blah/baz.cs:1:FOO
/Users/gjtorikian/blah/bar.js:1:FOO
Những gì tôi muốn là sed
thực hiện thay thế nội tuyến, và sau đó hiển thị cho tôi các tập tin và thuật ngữ thay thế; ví dụ:
/Users/gjtorikian/blah/baz.cs:1:BAR
/Users/gjtorikian/blah/bar.js:1:BAR
Là một điều như vậy có thể? Nếu nó quan trọng, tôi chỉ muốn giữ nó với grep
/ sed
. Tôi có phải làm một giây grep
sau sed
không?
''
, đó là mặc định.
''
không phải là mặc định.