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?
Câu trả lời:
Các head
lệnh có thể nhận được là người đầu tiên n
dò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.txt
tệp output.txt
và 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.
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.
(head -n10 file.txt ; echo "Some stuff" ; tail -n +10 file.txt) > newfile.txt
head -n 100 yourfile.csv > shrunkfile.csv && echo 'morelines' >> shrunkfile.csv