ฉันจะอ่านบรรทัดแรกของไฟล์โดยใช้ได้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 -1head -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 ก็มีประสิทธิภาพมากขึ้นอย่างมีนัยสำคัญกว่าวิธีที่เกี่ยวข้องกับกระบวนการย่อยเช่นหรือheadawk
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