Để 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.