วิธีคัดลอกไฟล์ขนาดยักษ์สองสามบรรทัดแรกและเพิ่มบรรทัดข้อความที่ท้ายไฟล์โดยใช้คำสั่ง Linux


92

ฉันจะคัดลอกไฟล์ขนาดยักษ์สองสามบรรทัดแรกและเพิ่มบรรทัดข้อความที่ท้ายไฟล์โดยใช้คำสั่ง Linux ได้อย่างไร


1
ในทุบตีhead -n 100 yourfile.csv > shrunkfile.csv && echo 'morelines' >> shrunkfile.csv
Eric Leschinski

คำตอบ:


151

headคำสั่งจะได้รับเป็นครั้งแรกที่nสาย รูปแบบต่างๆ ได้แก่ :

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

ซึ่งจะได้รับ 7 บรรทัดแรกของไฟล์ที่เรียกว่า"file". คำสั่งที่จะใช้ขึ้นอยู่กับเวอร์ชันของheadไฟล์. Linux จะทำงานร่วมกับตัวแรก

ในการต่อท้ายบรรทัดต่อท้ายไฟล์เดียวกันให้ใช้:

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

หรือ:

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

ทำในการตีหนึ่ง

ดังนั้นการผูกแนวคิดทั้งสองนี้เข้าด้วยกันหากคุณต้องการรับ 10 บรรทัดแรกของinput.txtไฟล์output.txtและต่อท้ายบรรทัดที่มี"="อักขระห้าตัวคุณสามารถใช้สิ่งต่อไปนี้:

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

ในกรณีนี้เราจะดำเนินการทั้งสองอย่างใน sub-shell เพื่อรวมสตรีมเอาต์พุตให้เป็นหนึ่งซึ่งจะใช้ในการสร้างหรือเขียนทับไฟล์เอาต์พุต


22

ฉันสมมติว่าสิ่งที่คุณพยายามจะบรรลุคือการแทรกบรรทัดหลังจากสองสามบรรทัดแรกของไฟล์ข้อความ

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

หากคุณไม่ต้องการเว้นบรรทัดจากไฟล์ให้ข้ามส่วนท้าย


3
Subshells ช่วยให้คุณทำสิ่งนี้ได้โดยไม่ต้องเปิดไฟล์เอาต์พุตขึ้นมาใหม่:(head -n10 file.txt ; echo "Some stuff" ; tail -n +10 file.txt) > newfile.txt
hobbs

5

สองสามบรรทัดแรก: man head.

ต่อท้ายบรรทัด: ใช้ตัว>>ดำเนินการ (?) ใน Bash:

echo 'This goes at the end of the file' >> file
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.