Tôi cần xóa 42 dòng đầu tiên của kết xuất SQL 2GB.
Tôi biết tôi có thể xem các dòng đầu tiên bằng cách sử dụng:
head -n 44 dump.sql
Nhưng có cách nào để chỉnh sửa hoặc loại bỏ chúng?
Tôi cần xóa 42 dòng đầu tiên của kết xuất SQL 2GB.
Tôi biết tôi có thể xem các dòng đầu tiên bằng cách sử dụng:
head -n 44 dump.sql
Nhưng có cách nào để chỉnh sửa hoặc loại bỏ chúng?
Câu trả lời:
Nếu bạn muốn chỉ xem các dòng từ thứ 43 trở đi, bạn có thể sử dụng
tail -n +43 dump.sql
Các +dấu hiệu rất quan trọng - không có nó, tailsẽ in cuối cùng 43 dòng để thay thế. Hoặc với 'sed'
sed 1,42d dump.sql
Nếu bạn thực sự muốn xóa 42 dòng đầu tiên khỏi tệp gốc thì bạn có thể thực hiện sed thực hiện thay đổi tại chỗ với -itùy chọn
sed -i 1,42d dump.sql
sed -i 1,50000000d 17GigFiletạo một tệp tạm thời sedXYZtiêu thụ nhiều gigabyte hơn. Có một cách tiếp cận mà không có tập tin tạm thời?
tail -n +43và head -n 44như được đề cập trong câu hỏi là gì?
Đây có vẻ là dễ nhất:
sed '1,42d' test.sql > test2.sql
Xóa các dòng 1-42 khỏi test.sql và lưu dưới dạng test2.sql
Bạn có thể sử dụng Vim trong chế độ Ex:
ex -s -c '1d42|x' dump.sql
1 di chuyển đến dòng đầu tiên
42 chọn 42 dòng
d xóa bỏ
x lưu và đóng
Xin lỗi, tôi không thể cung cấp cho bạn mã thực tế ngay bây giờ. Tuy nhiên, hãy thử nhìn vào một cái gì đó dọc theo dòng
tail -n arcv(`wc -l`) -44
Điều này nên làm (một khi được định dạng chính xác) là đếm số dòng trong tệp (wc -l), trừ 44 từ nó (-44) và sau đó in ra mọi thứ bắt đầu bằng dòng thứ 45 trong tệp.
Hy vọng điều này sẽ giúp và may mắn.
wc -lvào tệp, bạn xử lý nó hai lần, trong khi sedhoặc tailxử lý nó chỉ một lần.
Do sedsự khác biệt giữa Linux và Mac, tôi đã quyết tail -n +43 dump.sql > dump.sqlđịnh sử dụng định dạng.
tail. Tôi đã tìm thấy nhiều lần một cái gì đó mới để học hỏi từ câu trả lời của bạn. cảm ơn.