Cách xóa dòng khỏi giữa tệp bằng thiết bị đầu cuối Linux
Khi bạn quản lý các máy chủ của riêng mình, một trong những điều bạn cần phải làm trên cơ sở bán định kỳ 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 từ giữa tệp sao lưu MySQL của mình, như tôi đã làm.
Để tìm ra số dòng, một lệnh grep -n đơn giản đã thực hiện công việc (đối số -n đưa ra số dòng). Điều này giúp dễ dàng tìm ra những gì tôi cần trích xuất.
grep -n wp_posts howtogeekdb010114.bak | hơn
Kết quả trong một cái gì đó như thế này, cho thấy các số dòng ở phía bên trái của đầu ra. Đường ống mọi thứ vào thành phố nhiều hơn nữa đảm bảo rằng bạn có thể thấy dòng đầu tiên mà không cần cuộn qua. Bây giờ bạn đã có số dòng để bắt đầu và có lẽ là số kết thúc bằng.
4160: - Cấu trúc bảng cho bảng 'wp_posts' 4163: DROP TABLE IF EXISTS 'wp_posts'; 4166: TẠO BẢNG 'wp_posts' (4203: - Kết xuất dữ liệu cho bảng 'wp_posts' 4206: LOCK TABLES 'wp_posts' WRITE; 4207: / *! 40000 ALTER TABLE 'wp_posts' DISABLE KEYS 'GIÁ TRỊ (1,2,' 2006-09-11 05:07:23 ',' 2006-09-11
Tất nhiên, bạn có thể chỉ cần chuyển đầu ra từ grep sang một tệp khác, như thế này:
từ khóa grep filename.txt> outputfile
Trong trường hợp của tôi, điều đó không muốn làm việc, vì tôi không thể nhập bản sao lưu kết quả vì một số lý do. Vì vậy, tôi đã tìm thấy một cách khác để trích xuất các dòng bằng sed và phương pháp này đã hoạt động.
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 cả số pv sau số dòng thứ hai.
sed -n 'Tên tệp FIRSTLINEENUMBER, LASTLINEENUMBERp'> 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 headvv với các đối số + số để chỉ đọc qua các dòng x đầu tiên của 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 hơn? Bạn có thể sử dụng lệnh split để biế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.