Tìm & Thay thế Văn bản trong Nhiều Tài liệu từ Dòng lệnh
Nếu bạn cảm thấy thoải mái với dòng lệnh và từng ở trong tình huống cần tìm và thay thế một từ, cụm từ, URL hoặc ký tự trong một nhóm nhiều tài liệu văn bản, perl sẽ thực hiện công việc khá tốt. Một chuỗi lệnh đơn giản sẽ nhanh chóng thực hiện tìm và thay thế hàng loạt nhóm trên văn bản, cho dù trong một tài liệu đơn lẻ hay trải rộng trên một nhóm nhiều tài liệu.
Giống như nhiều thứ trong dòng lệnh, không có quy trình xác nhận, vì vậy bạn sẽ muốn đảm bảo rằng cú pháp của mình được đặt chính xác trước khi bắt đầu một lệnh, nếu không, bạn có thể cần thực hiện một thao tác tìm & thay thế khác để sửa lỗi đánh máy của bạn.
Cú pháp lệnh cơ bản như sau: perl -pi -w -e 's/THIS/THAT/g;' /path/to/files.txt
Đối với ví dụ từ đơn, nếu bạn cần thay thế tất cả các phiên bản của “ogre” bằng “cornbread” trong mọi tệp .txt trong thư mục “Documents”, thì bạn sẽ sử dụng lệnh sau:
perl -pi -w -e 's/ogre/cornbread/g;' ~/Documents/.txt
Đối với ví dụ về việc tìm và thay thế toàn bộ cụm từ, giả sử chúng ta sẽ thay thế toàn bộ câu “The Chocolate Factory ” với “The Wizard of Oz” trong một nhóm tệp .txt bắt đầu bằng “Films” được lưu trữ trong thư mục Documents:
perl -pi -w -e 's/The Chocolate Factory/The Wizard of Oz/g;' ~/Documents/Films.txt
Việc tìm và thay thế được thực hiện ngay lập tức. Bạn có thể kiểm tra lại thay đổi bằng cách sử dụng cat và grep để kiểm tra:
cat ~/Documents/Films124.txt |grep Wizard of Oz"
Phải thừa nhận rằng điều này khá nâng cao và vâng, việc tìm và thay thế hàng loạt thông qua nhiều tài liệu có thể được thực hiện theo cách thân thiện hơn với người dùng thông qua các ứng dụng GUI như TextWrangler và BBEdit, nhưng đôi khi dòng lệnh chỉ nhanh hơn cho các tác vụ nhanh như thế này và các tác vụ khác tương tự, ngoài ra, nó không yêu cầu bất kỳ bản tải xuống bổ sung nào để sử dụng.
Chúc mừng Lifehacker vì thủ thuật xuất sắc.
Update: Lệnh ‘sed’ là một cách khác để tìm và thay thế nhanh thông qua dòng lệnh. Bao trùm sed chủ yếu là một chủ đề cho một bài viết khác, nhưng cú pháp cơ bản của việc sử dụng sed cho tác vụ này đơn giản hơn một chút và do đó dễ nhớ hơn:
sed -i 's/THIS/THAT/g' /path/to/files.txt
Không có cách nào đúng hay sai, vì vậy việc bạn sử dụng perl hay sed tùy thuộc vào sở thích cá nhân.