ฉันจะอ่านบรรทัดแรกของไฟล์โดยใช้ได้cat
อย่างไร
ฉันจะอ่านบรรทัดแรกของไฟล์โดยใช้ได้cat
อย่างไร
คำตอบ:
cat
คุณไม่จำเป็นต้อง
head -1 file
จะทำงานได้ดี
head
อ่านไฟล์ทั้งหมดและตัดมันหรือไม่ก็อ่านเพียง 1 บรรทัด?
cat <(head file1) <(head file2)
. ที่มา
คุณทำไม่ได้ใช้head
แทน
head -n 1 file.txt
มีหลายวิธี:
sed -n 1p file
head -n 1 file
awk 'NR==1' file
คุณสามารถใช้แต่มันอาจจะดีกว่าที่จะใช้หัวโดยตรงในขณะที่cat file.txt | head -1
head -1 file.txt
cat
นี้อาจไม่ได้เป็นไปได้ด้วย มีเหตุผลที่คุณต้องใช้cat
หรือไม่?
หากคุณเพียงแค่ต้องทำมันด้วยคำสั่ง bash สิ่งนี้จะได้ผลสำหรับคุณ:
head -n 1 file.txt
cat
คนเดียวอาจเป็นไปไม่ได้ แต่ถ้าคุณไม่ต้องการใช้งานhead
นี้:
cat <file> | awk 'NR == 1'
cat
ไม่ได้
awk
ยอดเยี่ยม แต่คุณไม่ต้องการcat
ที่นี่ awk 'NR == 2 {print $0}' <file>
ทำสิ่งเดียวกัน (และอื่น ๆ อีกมากมายถ้าคุณเรียนรู้เล็ก ๆ น้อย ๆawk
.
ฉันประหลาดใจที่คำถามนี้มีมานานเท่าที่มีอยู่และยังไม่มีใครได้เตรียมวิธีการติดตั้งมาพร้อมกับไฟล์ในตัวไว้ล่วงหน้า
IFS= read -r first_line <file
... วางบรรทัดแรกของไฟล์ในตัวแปรที่ขยายโดย"$first_line"
ง่ายเหมือนกับที่
นอกจากนี้เนื่องจากread
ถูกสร้างขึ้นในทุบตีและการใช้งานนี้ต้องไม่มี subshell ก็มีประสิทธิภาพมากขึ้นอย่างมีนัยสำคัญกว่าวิธีที่เกี่ยวข้องกับกระบวนการย่อยเช่นหรือhead
awk
IFS=
ส่วนหนึ่งที่จุดเริ่มต้น?
IFS
จะป้องกันช่องว่างนำหน้าและต่อท้ายไม่ให้ถูกดึงออกจากสตริงที่อ่าน
คุณไม่ต้องการคำสั่งภายนอกถ้าคุณมี bash v4 +
< file.txt mapfile -n1 && echo ${MAPFILE[0]}
หรือถ้าคุณต้องการจริงๆ cat
cat file.txt | mapfile -n1 && echo ${MAPFILE[0]}
:)
ใช้คำสั่งด้านล่างเพื่อรับแถวแรกจากไฟล์ CSV หรือรูปแบบไฟล์ใด ๆ
head -1 FileName.csv