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ó, tail
sẽ 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 -i
tùy chọn
sed -i 1,42d dump.sql
sed -i 1,50000000d 17GigFile
tạo một tệp tạm thời sedXYZ
tiê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 +43
và head -n 44
như đượ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 -l
vào tệp, bạn xử lý nó hai lần, trong khi sed
hoặc tail
xử lý nó chỉ một lần.
Do sed
sự 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.