2012-05-05 30 views
49

Tôi đang cố gắng xóa hai dòng đầu tiên và bốn dòng cuối cùng khỏi các tệp văn bản của tôi. Làm thế nào tôi có thể làm điều này với Bash?Làm cách nào để xóa hai dòng đầu tiên và bốn dòng cuối cùng khỏi một tệp văn bản có bash?

+0

Sau đây có thể giúp bạn với xóa dòng ở phần cuối của tập tin: [http://stackoverflow.com/questions/4881930/bash -remove-the-last-line-from-a-file] (http://stackoverflow.com/questions/4881930/bash-remove-the-last-line-from-a-file) – Linger

Trả lời

72

Bạn có thể kết hợp tailhead:

$ tail -n +3 file.txt | head -n -4 > file.txt.new && mv file.txt.new file.txt 
+10

+1 không sử dụng 'cat'. –

+0

Cảm ơn bạn rất nhiều. – rebca

+1

Lưu ý rằng từ Git Bash trong Windows, 'tail -n + 3' hoạt động nhưng' head -n -4' cho 'số dòng không hợp lệ'. Có vẻ như một lỗi (có lẽ một phiên bản cũ của 'đầu' được sử dụng). Đầu số –

16

Head và Tail

cat input.txt | tail -n +3 | head -n -4 

Sed Giải pháp

cat input.txt | sed '1,2d' | sed -n -e :a -e '1,4!{P;N;D;};N;ba' 
+4

Bạn không cần sử dụng 'cat':' tail -n +3 input.txt | ... 'hoạt động hoàn hảo (và giống với' sed'). – huon

+0

... Cảm ơn ... :) – Debaditya

+3

Cảm ơn vì giải pháp sed; Tôi cần nó trên một máy không cho phép số dòng tiêu cực cho đầu. (4 trong lệnh đầu tiên nên được phủ nhận, bằng cách này.) – eswald

2

Bạn có thể gọi trình soạn thảo cũ từ dòng lệnh bash sử dụng mẫu sau. Lưu ý rằng nó sử dụng một here document để kết thúc danh sách các lệnh cũ.

ex text.file << EOF 
1,2d 
$ 
-3,.d 
x 
EOF 
7

Đây là cách nhanh nhất tôi tìm thấy:

sed -i 1,2d filename 
+0

-i là sai –

+0

'-i mở rộng Chỉnh sửa tệp tại chỗ, lưu bản sao lưu với phần mở rộng được chỉ định. Nếu một phần mở rộng có độ dài bằng không được đưa ra, không có bản sao lưu nào được lưu. Không nên đưa ra một số 0-mở rộng độ dài khi tệp chỉnh sửa tại chỗ, vì bạn có nguy cơ tham nhũng hoặc một phần nội dung trong các tình huống không gian đĩa bị cạn kiệt, v.v. – finferflu

+0

Đó là những gì tài liệu nói, ít nhất là việc thực hiện sed trên hệ thống của tôi… – finferflu

Các vấn đề liên quan