Đâ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: grepcho FOO trong blahthư mục; ống chỉ trong tên tệp (vì -l) đến sed; sedthự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à sedthự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 grepsau sedkhông?
'', đó là mặc định.
''không phải là mặc định.