Làm cách nào để sao chép vài dòng đầu tiên của một tệp khổng lồ và thêm một dòng văn bản vào cuối tệp bằng một số lệnh Linux?


89

Làm cách nào để sao chép vài dòng đầu tiên của một tệp khổng lồ và thêm một dòng văn bản vào cuối tệp bằng một số lệnh Linux?


1
Trong bashhead -n 100 yourfile.csv > shrunkfile.csv && echo 'morelines' >> shrunkfile.csv
Eric Leschinski

Câu trả lời:


147

Các headlệnh có thể nhận được là người đầu tiên ndòng. Các biến thể là:

head -7 file
head -n 7 file
head -7l file

sẽ nhận được 7 dòng đầu tiên của tệp được gọi "file". Lệnh sử dụng tùy thuộc vào phiên bản của bạn head. Linux sẽ hoạt động với cái đầu tiên.

Để nối các dòng vào cuối cùng một tệp, hãy sử dụng:

echo 'first line to add' >>file
echo 'second line to add' >>file
echo 'third line to add' >>file

hoặc là:

echo 'first line to add
second line to add
third line to add' >>file

để làm điều đó trong một lần đánh.

Vì vậy, liên kết hai ý tưởng này với nhau, nếu bạn muốn lấy 10 dòng đầu tiên của input.txttệp output.txtvà nối thêm một dòng có năm "="ký tự, bạn có thể sử dụng một cái gì đó như:

( head -10 input.txt ; echo '=====' ) > output.txt

Trong trường hợp này, chúng tôi thực hiện cả hai hoạt động trong một trình bao con để hợp nhất các luồng đầu ra thành một, sau đó được sử dụng để tạo hoặc ghi đè tệp đầu ra.


21

Tôi giả sử những gì bạn đang cố gắng đạt được là chèn một dòng sau vài dòng đầu tiên của tệp văn bản.

head -n10 file.txt >> newfile.txt
echo "your line >> newfile.txt
tail -n +10 file.txt >> newfile.txt

Nếu bạn không muốn phần còn lại của các dòng trong tệp, chỉ cần bỏ qua phần đuôi.


3
Subshells cho phép bạn làm điều này mà không cần mở lại tập tin đầu ra:(head -n10 file.txt ; echo "Some stuff" ; tail -n +10 file.txt) > newfile.txt
Hobbs

5

Vài dòng đầu tiên: man head.

Nối các dòng: sử dụng >>toán tử (?) Trong Bash:

echo 'This goes at the end of the file' >> file
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.