คำถามติดแท็ก head

ใช้สำหรับคำถามเกี่ยวกับคำสั่ง head ซึ่งแสดงผล x จำนวนไบต์หรือบรรทัดแรกของไฟล์

6
cat line X ถึง line Y ในไฟล์ขนาดใหญ่
ว่าฉันมีแฟ้มข้อความขนาดใหญ่ (> 2GB) และฉันเพียงต้องการที่จะcatสายXไปY(เช่น 57890000-57890010) จากสิ่งที่ฉันเข้าใจฉันสามารถทำสิ่งนี้ได้โดยการไพพ์headไปยังtailหรือ viceversa เช่น head -A /path/to/file | tail -B หรืออีกวิธีหนึ่ง tail -C /path/to/file | head -D ที่A, B, CและDสามารถคำนวณจากจำนวนบรรทัดในไฟล์และXY แต่มีสองปัญหาด้วยวิธีนี้: คุณต้องคำนวณA, B, และCD คำสั่งสามารถpipeต่อบรรทัดอื่น ๆ ได้มากกว่าที่ฉันสนใจในการอ่าน (เช่นถ้าฉันอ่านเพียงไม่กี่บรรทัดที่อยู่ตรงกลางไฟล์ขนาดใหญ่) มีวิธีที่จะให้เชลล์ใช้งานและส่งออกบรรทัดที่ฉันต้องการหรือไม่? (ในขณะที่ให้เท่านั้นXและY)?
132 tail  cat  large-files  head 

10
วิธีการรับพฤติกรรมผกผันสำหรับ "หาง" และ "หัว"
มีวิธีการhead/ tailเอกสารและรับเอาท์พุทย้อนกลับ; เพราะคุณไม่ทราบว่ามีเอกสารกี่บรรทัด? คือฉันต้องการรับทุกอย่าง แต่ 2 บรรทัดแรกfoo.txtเพื่อต่อท้ายเอกสารอื่น

9
คำสั่งให้แสดงสองสามบรรทัดแรกและสองสามบรรทัดสุดท้ายของไฟล์
ฉันมีไฟล์ที่มีหลายแถวและแต่ละแถวมีการประทับเวลาตอนเริ่มต้นเช่น [Thread-3] (21/09/12 06:17:38:672) logged message from code..... ดังนั้นฉันมักตรวจสอบ 2 สิ่งจากไฟล์บันทึกนี้ สองสามแถวแรกที่มีเงื่อนไขโกลบอลและเวลาเริ่มต้นจะได้รับด้วย ไม่กี่แถวสุดท้ายที่มีสถานะการออกพร้อมกับข้อมูลอื่น ๆ มีคำสั่งเดียวที่มีประโยชน์อย่างรวดเร็วที่สามารถให้ฉันแสดงบรรทัดแรกและสองสามบรรทัดของไฟล์ได้หรือไม่?

1
วิธีการทำ 'หัว' และ 'หาง' ในอินพุตที่มีการ จำกัด ด้วย null ในทุบตี?
findคำสั่งสามารถส่งออกชื่อของไฟล์เป็นสตริงที่คั่นด้วย null (ถ้า-print0มีให้) และxargsสามารถใช้พวกเขาด้วยการ-0เปิดตัวเลือก แต่ในระหว่างมันเป็นเรื่องยากที่จะจัดการกับคอลเลกชันของไฟล์ - sortคำสั่งมี-zสวิทช์ที่ทำให้มันเป็นไปได้ที่จะจัดเรียงไฟล์เหล่านั้น แต่headและtailไม่ได้พวกเขา ฉันจะทำheadและtailป้อนข้อมูลด้วยตัวคั่นที่ไม่มีค่าในวิธีที่สะดวกได้อย่างไร (ฉันสามารถสร้างสคริปต์ทับทิมสั้นและช้าได้เสมอ แต่ฉันหวังว่าอาจมีวิธีที่ดีกว่า)

3
หัวกินอักขระพิเศษ
คำสั่ง shell ต่อไปนี้คาดว่าจะพิมพ์บรรทัดคี่ของอินพุตสตรีมเท่านั้น: echo -e "aaa\nbbb\nccc\nddd\n" | (while true; do head -n 1; head -n 1 >/dev/null; done) aaaแต่มันเป็นเพียงแค่พิมพ์บรรทัดแรก: สิ่งเดียวกันจะไม่เกิดขึ้นเมื่อใช้กับตัวเลือก-c( --bytes): echo 12345678901234567890 | (while true; do head -c 5; head -c 5 >/dev/null; done) คำสั่งนี้ส่งออก1234512345ตามที่คาดไว้ แต่นี้จะทำงานเฉพาะในcoreutilsการดำเนินงานของheadยูทิลิตี้ busybox12345การดำเนินงานยังคงกินอักขระพิเศษเพื่อการส่งออกเป็นเพียง ฉันเดาว่าวิธีการใช้งานเฉพาะอย่างนี้ทำเพื่อการเพิ่มประสิทธิภาพ คุณไม่สามารถรู้ได้ว่าเส้นไหนจะจบลงดังนั้นคุณจะไม่ทราบว่าต้องอ่านตัวอักษรกี่ตัว วิธีเดียวที่จะไม่ใช้อักขระพิเศษจากอินพุตสตรีมคือการอ่านสตรีมไบต์เป็นไบต์ แต่การอ่านจากสตรีมทีละหนึ่งไบต์อาจช้า ดังนั้นฉันเดาว่าheadอ่านอินพุตสตรีมไปยังบัฟเฟอร์ใหญ่พอสมควรแล้วนับจำนวนบรรทัดในบัฟเฟอร์นั้น ไม่สามารถพูดแบบเดียวกันสำหรับกรณีได้เมื่อใช้--bytesตัวเลือก ในกรณีนี้คุณรู้จำนวนไบต์ที่คุณต้องอ่าน ดังนั้นคุณอาจอ่านจำนวนไบต์นี้อย่างแน่นอนและไม่มากกว่านั้น corelibsการดำเนินการจะใช้โอกาสนี้ แต่busyboxหนึ่งไม่ก็ยังคงอ่านไบต์มากขึ้นกว่าที่จำเป็นเข้าไปในกันชน มันอาจทำเพื่อทำให้การใช้งานง่ายขึ้น ดังนั้นคำถาม …

3
ฉันจะทำงานกับไบนารีใน bash เพื่อคัดลอกไบต์คำต่อคำโดยไม่มีการแปลงได้อย่างไร
ฉันพยายามแปลรหัส c ++ เป็น bash อย่างทะเยอทะยานด้วยเหตุผลมากมาย รหัสนี้อ่านและจัดการไฟล์ประเภทเฉพาะสำหรับฟิลด์ย่อยของฉันที่เขียนและจัดโครงสร้างอย่างสมบูรณ์ในไบนารี งานที่เกี่ยวข้องกับไบนารีครั้งแรกของฉันคือการคัดลอกส่วนหัว 988 ไบต์แรกตามที่เป็นจริงและใส่ลงในไฟล์เอาต์พุตที่ฉันสามารถเขียนต่อไปได้ในขณะที่ฉันสร้างข้อมูลที่เหลือ ฉันค่อนข้างมั่นใจว่าโซลูชันปัจจุบันของฉันใช้งานไม่ได้และในความเป็นจริงฉันไม่ได้คิดวิธีที่ดีในการพิจารณาสิ่งนี้ ดังนั้นแม้ว่ามันจะถูกเขียนขึ้นอย่างถูกต้องฉันต้องรู้ว่าฉันจะทดสอบสิ่งนี้อย่างไรเพื่อให้แน่ใจ! นี่คือสิ่งที่ฉันกำลังทำอยู่ตอนนี้: hdr_988=`head -c 988 ${inputFile}` echo -n "${hdr_988}" > ${output_hdr} headInput=`head -c 988 ${inputTrack} | hexdump` headOutput=`head -c 988 ${output_hdr} | hexdump` if [ "${headInput}" != "${headOutput}" ]; then echo "output header was not written properly. exiting. please …
14 bash  binary  head 

3
ข้อโต้แย้งเชิงลบที่หัว / หาง
คำถามที่แตกต่างกันนี้ได้ถูกถามหลายครั้งในที่ต่างกัน แต่ฉันพยายามลบMบรรทัดสุดท้ายออกจากไฟล์โดยไม่มีโชค ตอบที่สองได้รับการโหวตมากที่สุดในคำถามนี้แนะนำให้ทำดังต่อไปที่จะกำจัดของบรรทัดสุดท้ายในแฟ้ม: head -n -1 foo.txt > temp.txt อย่างไรก็ตามเมื่อฉันลองใน OSX & Zsh ฉันจะได้รับ: head: illegal line count -- -1 ทำไมถึงเป็นอย่างนั้น? ฉันจะเอาM ที่ผ่านมาสายและแรก Nสายของไฟล์ที่กำหนดหรือไม่

1
ทางเลือก 'หัว' ที่ไม่ออก?
ฉันต้องการยูทิลิตี้ที่จะพิมพ์บรรทัดแรกที่ n แต่แล้วก็ยังคงทำงานต่อไปดูดส่วนที่เหลือของบรรทัด แต่ไม่พิมพ์พวกเขา ฉันใช้เพื่อไม่ให้เทอร์มินัลกับผลลัพธ์ของกระบวนการที่ต้องดำเนินการต่อไป (มันเขียนผลลัพธ์ไปยังไฟล์) ฉันคิดว่าฉันสามารถทำได้process | {head -n 100; cat > /dev/null}แต่มีบางสิ่งที่สวยงามกว่านี้หรือไม่
13 head 

2
คำสั่งเพื่อลบจำนวน N บรรทัดแรกในอินพุต
พื้นหลัง ฉันใช้เซิร์ฟเวอร์ SSH และมีผู้ใช้ที่ฉันต้องการลบ ฉันไม่สามารถลบผู้ใช้รายนี้ได้เนื่องจากเขากำลังใช้งานกระบวนการบางอย่างที่ฉันต้องฆ่าเสียก่อน นี่คือขั้นตอนที่ฉันใช้อยู่ในขณะนี้เพื่อค้นหารหัสกระบวนการทั้งหมดของผู้ใช้ที่ฉันกำลังใช้: ps -u user | awk '{print $1;}' ผลลัพธ์มีลักษณะดังนี้: PID 2121 2122 2124 2125 2369 2370 ฉันต้องการไปป์นี้เพื่อkill -9ฆ่ากระบวนการทั้งหมดเพื่อให้ฉันสามารถลบผู้ใช้ที่โง่เช่นนี้: ps -u user | awk '{print $1;}' | sudo xargs kill -9 แต่สิ่งนี้ไม่ทำงานเนื่องจากPIDหัวข้อ: kill: failed to parse argument: 'PID' คำถาม ฉันคิดว่าจะต้องมีคำสั่ง Unix ง่าย ๆ เพื่อลบบรรทัดแรกของอินพุต ฉันรู้ว่าฉันสามารถใช้ tailสิ่งนี้ได้ …
11 command-line  sed  awk  tail  head 

3
เปรียบเทียบส่วนหัวของสองไฟล์ใน bash
ฉันสามารถทำได้diff filea filebเพื่อดูความแตกต่างระหว่างไฟล์ ฉันสามารถทำได้head -1 fileaเพื่อดูบรรทัดแรกของ filea หรือ fileb ฉันจะรวมคำสั่งเหล่านี้เพื่อแสดงความแตกต่างระหว่างบรรทัดแรกของ filea และบรรทัดแรกของ fileb ได้อย่างไร
11 bash  shell  diff  head 

5
ใช้ส่วนหัวและส่วนท้ายเพื่อจับเส้นชุดต่าง ๆ และบันทึกเป็นไฟล์เดียวกัน
ดังนั้นนี่คือการบ้าน แต่ฉันจะไม่ถามคำถามการบ้านเฉพาะ ฉันต้องใช้ส่วนหัวและส่วนท้ายเพื่อจับชุดของบรรทัดที่แตกต่างจากไฟล์เดียว เช่นเดียวกับบรรทัดที่ 6-11 และบรรทัดที่ 19-24 และบันทึกทั้งคู่เป็นไฟล์อื่น ฉันรู้ว่าฉันสามารถทำได้โดยใช้ผนวกเช่น head -11 file|tail -6 > file1; head -24 file| tail -6 >> file1. แต่ฉันไม่คิดว่าเราควรจะทำ มีวิธีเฉพาะที่ฉันสามารถรวมคำสั่งส่วนหัวและส่วนท้ายแล้วบันทึกลงในไฟล์ได้หรือไม่
10 tail  head 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.