Làm cách nào để tìm và thay thế chuỗi trên dòng lệnh trong nhiều tệp trên Unix?tìm và thay thế trong nhiều tệp trên dòng lệnh
Trả lời
có rất nhiều cách .Nhưng một trong những câu trả lời sẽ là:
find . -name '*.html' |xargs perl -pi -e 's/find/replace/g'
tôi luôn luôn làm điều đó với kịch bản ed hoặc kịch bản cũ.
for i in "[email protected]"; do ex - "$i" << 'eof'; done
%s/old/new/
x
eof
Các cũ lệnh chỉ là: dòng chế độ từ vi.
Điều này có lợi thế riêng biệt mà bạn có thể thực hiện các chỉnh sửa phức tạp hơn. – alastair
với vỏ bash gần đây, và giả sử bạn không cần phải đi qua thư mục
for file in *.txt
do
while read -r line
do
echo ${line//find/replace} > temp
done <"file"
mv temp "$file"
done
Giống như các giải pháp Zombie (và nhanh hơn tôi giả sử) nhưng với sed (tiêu chuẩn trên nhiều distro và OSX) thay vì Perl:
find . -name '*.py' | xargs sed -i .bak 's/foo/bar/g'
này sẽ thay thế tất cả foo lần xuất hiện trong các tập tin Python của bạn dưới đây thư mục hiện hành với thanh và tạo bản sao lưu cho mỗi tệp có phần mở rộng là .py.bak.
Và để loại bỏ de bak file:
find . -name "*.bak" -delete
Điều này ảnh hưởng đến khoảng trắng bên ngoài tìm kiếm. Dường như thêm dòng mới vào cuối mỗi tệp của tôi. – Shane
Chỉnh sửa tại chỗ AFAIK không được hỗ trợ trong mọi phiên bản sed; Tôi nghĩ đó là một phần mở rộng của GNU. – alastair
là một phần mở rộng của gnu và ít nhất trong phiên bản của tôi, nó phải là 'sed -i.bak' (không có khoảng trắng) – friedemann
Sử dụng tìm và sed với tên hoặc thư mục với việc sử dụng không gian này:
find . -name '*.py' -print0 | xargs -0 sed -i 's/foo/bar/g'
- 1. Ruby - Mở tệp, tìm và thay thế nhiều dòng
- 2. Dòng lệnh Perl nhiều dòng thay thế
- 3. Tìm và thay thế trong nhiều tệp
- 4. Cách thay thế nhiều dòng "Thay thế tệp ..." trong Notepad ++
- 5. tìm và thay thế từ dòng lệnh unix
- 6. Tìm và thay thế nhiều dòng trong tệp xml/văn bản bằng cách sử dụng python
- 7. Gợi ý cho công cụ tìm kiếm và thay thế dòng lệnh trên Windows
- 8. Perl tìm kiếm dòng lệnh và thay thế bằng nhiều biểu
- 9. Tìm và thay thế chuỗi trong nhiều tệp bằng tập lệnh Batch
- 10. Tìm kiếm nhiều dòng thay thế bằng Perl
- 11. Tìm và thay thế trong kịch bản lệnh shell
- 12. Tìm tệp trong thư mục từ dòng lệnh
- 13. thay thế chuỗi trong dòng lệnh zsh
- 14. Thay thế một dòng với nhiều dòng văn bản
- 15. Tìm kiếm nhiều dòng regex trong toàn bộ tệp
- 16. Lệnh nhiều dòng trong GHCi
- 17. Tìm kiếm và thay thế trên nhiều dòng với chuyển đổi để giảm trường hợp trong Vim
- 18. Tìm nhiều ký tự và thay thế bằng JQuery
- 19. Tìm và thay thế văn bản trong tệp .docx - Python
- 20. Linux tìm và thay thế
- 21. Nhiều lệnh trên cùng một dòng trong SQL Server 2005
- 22. SQLite - Chạy tập lệnh SQL nhiều dòng từ tệp?
- 23. VIM, Chạy lệnh trên nhiều tệp
- 24. Tối ưu hóa tìm và thay thế trên các tệp lớn trong Python
- 25. Tìm kiếm nhiều chuỗi trong nhiều tệp
- 26. tìm và thay thế chuỗi trong một tệp
- 27. Đường ống trong một tệp trên dòng lệnh bằng System.Diagnostics.Process
- 28. Trong tìm kiếm và thay thế vim, dòng mới được hiển thị dưới dạng "^ @"
- 29. Tìm nhiều tệp đệ quy và đổi tên trong linux
- 30. Unix lịch sử dòng lệnh thay^foo^bar (cho nhiều thay thế)
thể trùng lặp của [Tìm kiếm và thay thế một thuật ngữ cụ thể trong nhiều tệp] (http://stackoverflow.com/questions/2263925/find-and-replace-a-particular-term-in-multiple-files) – Quanlong