Làm thế nào để loại bỏ dòng từ giữa một tập tin bằng cách sử dụng Linux Terminal

Làm thế nào để loại bỏ dòng từ giữa một tập tin bằng cách sử dụng Linux Terminal
Làm thế nào để loại bỏ dòng từ giữa một tập tin bằng cách sử dụng Linux Terminal

Video: Làm thế nào để loại bỏ dòng từ giữa một tập tin bằng cách sử dụng Linux Terminal

Video: Làm thế nào để loại bỏ dòng từ giữa một tập tin bằng cách sử dụng Linux Terminal
Video: Để không mất điểm "oan" phần TRỌNG ÂM cực dễ này !!! // Chống Liệt Môn Anh 02 - YouTube 2024, Tháng tư
Anonim
Khi bạn quản lý các máy chủ của riêng bạn, một trong những điều bạn cần phải thực hiện trên cơ sở bán thường xuyên là trích xuất nội dung từ giữa tệp. Có thể đó là tệp nhật ký hoặc bạn cần thêm một bảng duy nhất từ giữa tệp sao lưu MySQL của bạn, như tôi đã làm.
Khi bạn quản lý các máy chủ của riêng bạn, một trong những điều bạn cần phải thực hiện trên cơ sở bán thường xuyên là trích xuất nội dung từ giữa tệp. Có thể đó là tệp nhật ký hoặc bạn cần thêm một bảng duy nhất từ giữa tệp sao lưu MySQL của bạn, như tôi đã làm.

Để tìm ra các số dòng, lệnh grep -n đơn giản đã thực hiện công việc (đối số -n xuất ra các số dòng). Điều này làm cho nó dễ dàng để tìm ra những gì tôi cần phải trích xuất.

grep -n wp_posts howtogeekdb010114.bak | more

Kết quả trong một cái gì đó như thế này, trong đó cho thấy số dòng trên ở phía bên trái của đầu ra. Đường ống mọi thứ vào "nhiều hơn" đảm bảo rằng bạn có thể nhìn thấy dòng đầu tiên mà không có nó di chuyển bằng. Bây giờ bạn đã có số dòng để bắt đầu và có thể là số để kết thúc.

4160:-- Table structure for table `wp_posts` 4163:DROP TABLE IF EXISTS `wp_posts`; 4166:CREATE TABLE `wp_posts` ( 4203:-- Dumping data for table `wp_posts` 4206:LOCK TABLES `wp_posts` WRITE; 4207:/*!40000 ALTER TABLE `wp_posts` DISABLE KEYS */; 4208:INSERT INTO `wp_posts` VALUES (1,2,'2006-09-11 05:07:23','2006-09-11

Bạn có thể, tất nhiên, chỉ cần ống đầu ra từ grep vào một tập tin khác, như thế này:

grep keyword filename.txt > outputfile

Trong trường hợp của tôi, điều đó không muốn làm việc, bởi vì tôi không thể nhập bản sao lưu kết quả vì một lý do nào đó. Vì vậy, tôi tìm thấy một cách khác nhau để trích xuất các dòng bằng cách sử dụng sed, và phương pháp này đã làm việc.

sed -n '4160,4209p' howtogeekdb0101140201.bak > outputfile

Về cơ bản cú pháp là như thế này, đảm bảo sử dụng đối số -n và bao gồm "p" sau số thứ hai của dòng.

sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' filename > outputfilename

Một số cách khác bạn có thể kéo ra các dòng cụ thể ở giữa một tập tin? Bạn có thể sử dụng lệnh “head” với đối số + number để chỉ đọc qua các dòng x đầu tiên của một tệp và sau đó sử dụng đuôi để trích xuất các dòng đó. Không phải là lựa chọn tốt nhất, rất nhiều chi phí. Tùy chọn đơn giản? Bạn có thể sử dụng lệnh split để chuyển tệp thành nhiều tệp ngay tại số dòng bạn muốn, sau đó trích xuất các dòng bằng đầu hoặc đuôi.

Hoặc bạn chỉ có thể sử dụng sed.

Đề xuất: