คำถามติดแท็ก large-files

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 

14
แทนที่สตริงในขนาดใหญ่ (70GB) หนึ่งบรรทัดไฟล์ข้อความ
ฉันมีขนาดใหญ่ (70GB) หนึ่งบรรทัดไฟล์ข้อความและฉันต้องการแทนที่สตริง (โทเค็น) ในนั้น ฉันต้องการแทนที่โทเค็น<unk>ด้วยโทเค็นจำลองอีกตัว ( ปัญหาถุงมือ ) ฉันพยายามsed: sed 's/<unk>/<raw_unk>/g' < corpus.txt > corpus.txt.new แต่ไฟล์ที่ส่งออกcorpus.txt.newมีศูนย์ไบต์! ฉันยังลองใช้ Perl: perl -pe 's/<unk>/<raw_unk>/g' < corpus.txt > corpus.txt.new แต่ฉันได้รับข้อผิดพลาดหน่วยความจำไม่เพียงพอ สำหรับไฟล์ขนาดเล็กคำสั่งทั้งสองข้างต้นจะใช้งานได้ ฉันจะแทนที่สตริงเป็นไฟล์ดังกล่าวได้อย่างไร นี่เป็นคำถามที่เกี่ยวข้อง แต่ไม่มีคำตอบสำหรับฉันเลย แก้ไข : สิ่งที่เกี่ยวกับการแยกไฟล์ในกลุ่มของ 10GBs (หรืออะไรก็ได้) และนำไปใช้sedกับแต่ละคนแล้วรวมกับพวกเขาcat? มันสมเหตุสมผลไหม มีวิธีแก้ปัญหาที่สง่างามกว่านี้ไหม?

9
วิธีลบบรรทัดที่ซ้ำกันในไฟล์ข้อความ?
ไฟล์ข้อความขนาดใหญ่ (มากถึง 2 GiB) ของฉันมีข้อมูลที่ซ้ำกันประมาณ 100 รายการทุกบรรทัดในนั้น (ไร้ประโยชน์ในกรณีของฉันเนื่องจากไฟล์เป็นตารางข้อมูลที่เหมือน CSV) สิ่งที่ฉันต้องการคือการลบการทำซ้ำทั้งหมดในขณะที่ (โดยเฉพาะอย่างยิ่ง แต่สิ่งนี้สามารถเสียสละเพื่อเพิ่มประสิทธิภาพที่สำคัญ) การรักษาลำดับเดิม ในผลลัพธ์แต่ละบรรทัดจะต้องไม่ซ้ำกัน หากมี 100 เส้นเท่ากัน (โดยปกติรายการที่ซ้ำกันจะกระจายไปทั่วไฟล์และจะไม่เป็นเพื่อนบ้าน) จะต้องมีเพียงหนึ่งในประเภทที่เหลือ ฉันได้เขียนโปรแกรมใน Scala (พิจารณาเป็น Java ถ้าคุณไม่ทราบเกี่ยวกับ Scala) เพื่อดำเนินการนี้ แต่บางทีมีเครื่องมือดั้งเดิมที่เขียนด้วยภาษา C เร็วกว่าสามารถทำสิ่งนี้ได้เร็วขึ้น? อัปเดต: awk '!seen[$0]++' filenameดูเหมือนว่าโซลูชันจะทำงานได้ดีสำหรับฉันตราบใดที่ไฟล์อยู่ใกล้กับ 2 GiB หรือเล็กกว่า แต่ตอนนี้เมื่อฉันต้องล้างไฟล์ 8 GiB มันไม่ทำงานอีกต่อไป ดูเหมือนว่าจะไม่มีที่สิ้นสุดบน Mac ที่มี 4 GiB RAM และ 64-bit Windows 7 …

11
มีวิธีแก้ไขไฟล์ในสถานที่หรือไม่?
ฉันมีไฟล์ขนาดใหญ่พอสมควร (35Gb) และฉันต้องการกรองไฟล์นี้ในแหล่งกำเนิด (เช่นฉันมีพื้นที่ดิสก์ไม่เพียงพอสำหรับไฟล์อื่น) โดยเฉพาะฉันต้องการ grep และไม่สนใจรูปแบบบางอย่าง - มีวิธีในการ ทำเช่นนี้โดยไม่ใช้ไฟล์อื่น สมมติว่าฉันต้องการกรองบรรทัดทั้งหมดที่มีfoo:ตัวอย่างเช่น ...


3
ถ่ายโอนไฟล์ขนาดใหญ่ (8 GB) ผ่าน ssh
ฉันลองกับ SCP แล้ว แต่มีข้อความว่า "ขนาดไฟล์เชิงลบ" >scp matlab.iso xxx@xxx:/matlab.iso matlab.iso: Negative file size ลองใช้ SFTP อีกครั้งทำงานได้ดีจนกระทั่งไฟล์ 2 GB โอนแล้วหยุด sftp> put matlab.iso Uploading matlab.iso to /home/x/matlab.iso matlab.iso -298% 2021MB -16651.-8KB/s 00:5d o_upload: offset < 0 มีความคิดอะไรที่อาจจะผิดหรือเปล่า? SCP และ SFTP ไม่รองรับไฟล์ที่มีขนาดใหญ่กว่า 2 GB หรือไม่ ถ้าเป็นเช่นนั้นฉันจะถ่ายโอนไฟล์ที่ใหญ่กว่าผ่าน SSH ได้อย่างไร ระบบไฟล์ปลายทางคือ ext4 การกระจาย Linux คือ …
27 scp  sftp  large-files 

3
แทนที่ข้อความอย่างรวดเร็วในไฟล์ที่มีขนาดใหญ่มาก
ฉันมีไฟล์ข้อความ 25GB ที่ต้องการสตริงแทนที่ในไม่กี่บรรทัด ฉันสามารถใช้งานได้sedสำเร็จ แต่ใช้เวลาในการรันนานมาก sed -i 's|old text|new text|g' gigantic_file.sql มีวิธีที่เร็วกว่าในการทำเช่นนี้?

2
เหตุใดไฟล์เหล่านี้จึงมีการแยกส่วนโวลุ่มเป็นส่วนขยาย?
ฉันมีext4พาร์ติชัน900GB บนฮาร์ดไดรฟ์ (แบบแม่เหล็ก) ที่ไม่มีข้อบกพร่องและไม่มีเซกเตอร์เสีย พาร์ติชันว่างเปล่าอย่างสมบูรณ์ยกเว้นlost+foundไดเรกทอรีว่าง พาร์ติชันถูกฟอร์แมตโดยใช้พารามิเตอร์เริ่มต้นยกเว้นว่าฉันจะตั้งค่าจำนวนบล็อกระบบไฟล์ที่สงวนไว้เป็น 1% ฉันดาวน์โหลดไฟล์ ~ 900MB xubuntu-15.04-desktop-amd64.isoพาร์ทิชันของ mount wgetไดเรกทอรีจุดโดยใช้ เมื่อการดาวน์โหลดเสร็จสิ้นฉันพบว่าไฟล์ถูกแบ่งออกเป็นสี่ส่วน: filefrag -v /media/emma/red/xubuntu-15.04-desktop-amd64.iso Filesystem type is: ef53 File size of /media/emma/red/xubuntu-15.04-desktop-amd64.iso is 1009778688 (246528 blocks of 4096 bytes) ext: logical_offset: physical_offset: length: expected: flags: 0: 0.. 32767: 34816.. 67583: 32768: 1: 32768.. 63487: 67584.. 98303: 30720: …

1
จำนวนไฟล์ต่อไดเรกทอรี
ฉันมีไดเรกทอรีที่มีไฟล์ขนาดเล็กประมาณ 100,000 ไฟล์ (แต่ละไฟล์มีตั้งแต่ 1-3 บรรทัดแต่ละไฟล์เป็นไฟล์ข้อความ) ขนาดไดเรกทอรีไม่ใหญ่มาก (<2GB) ข้อมูลนี้อาศัยอยู่ในเซิร์ฟเวอร์ NFS ที่ดูแลอย่างมืออาชีพ เซิร์ฟเวอร์รัน Linux ฉันคิดว่าระบบไฟล์ ext3 แต่ฉันไม่รู้แน่นอน นอกจากนี้ฉันไม่สามารถเข้าถึงเซิร์ฟเวอร์ได้ ไฟล์เหล่านี้เป็นผลลัพธ์ของการทดลองทางวิทยาศาสตร์ขนาดใหญ่ซึ่งฉันไม่สามารถควบคุมได้ อย่างไรก็ตามฉันต้องวิเคราะห์ผลลัพธ์ การดำเนินการ / การประมวลผล I / O ใด ๆ ในไดเรกทอรีนี้ช้ามาก การเปิดไฟล์ (fopen ใน python) การอ่านจากไฟล์ที่เปิดปิดไฟล์ทั้งหมดช้ามาก ใน bash ls, du ฯลฯ ไม่ทำงาน คำถามคือ: จำนวนไฟล์สูงสุดในไดเรกทอรีในลีนุกซ์ในทางที่เป็นไปได้ในการประมวลผล, fopen, อ่าน, ฯลฯ คืออะไร? ฉันเข้าใจว่าคำตอบนั้นขึ้นอยู่กับหลาย ๆ อย่าง: ประเภท fs, …

5
ฉันจะแก้ไขไฟล์ขนาดใหญ่ได้อย่างไร
ฉันมีขนาดไฟล์ไม่เกิน> 1 GB ต่อไฟล์ ฉันต้องการลบสองสามไบต์สุดท้ายออกจากไฟล์ ฉันจะทำมันได้อย่างไร ฉันชอบที่จะแก้ไขไฟล์เพื่อประหยัดพื้นที่ดิสก์ ฉันใช้ HP-UX

2
คุณลักษณะ largefile ที่สร้างระบบไฟล์
มีประโยชน์ในการใช้แฟล็ก -T largefileเมื่อสร้างระบบไฟล์สำหรับพาร์ติชันที่มีไฟล์ขนาดใหญ่เช่นวิดีโอและเสียงในรูปแบบ flac หรือไม่ ฉันทดสอบพาร์ติชันเดียวกันกับแฟล็กนั้นและไม่ใช้มันและใช้tune2fs -l [พาร์ติชัน]ฉันตรวจสอบใน "คุณสมบัติของระบบแฟ้ม" ที่ทั้งคู่เปิดใช้งาน "large_file" ดังนั้นไม่จำเป็นต้องใช้แฟล็ก -file แฟล็กไฟล์ขนาดใหญ่ ?

3
Emacs: เปิดบัฟเฟอร์ที่มีทุกบรรทัดระหว่างบรรทัด X ถึง Y จากไฟล์ขนาดใหญ่
ในจิตวิญญาณเดียวกันกับคำถามอื่น ๆ นี้: cat line X ถึง line Y ในไฟล์ขนาดใหญ่ : มีวิธีการเปิดจากภายใน Emacs (และแสดงบนบัฟเฟอร์) ชุดของบรรทัดที่กำหนด (เช่นทุกบรรทัดระหว่างบรรทัดXและY) จากไฟล์ข้อความขนาดใหญ่หรือไม่? เช่นเปิดและแสดงในบัฟเฟอร์ทุกบรรทัดระหว่างบรรทัด 57890000 และ 57890010 จากไฟล์ huge.txt อัปเดต: ฉันสนใจโซลูชันที่อย่างน้อยสามารถเปิดบรรทัดเป็นแบบอ่านอย่างเดียว (สำหรับจุดประสงค์ในการแสดงผล) แม้ว่าจะเป็นการดีถ้าฉันสามารถแก้ไขบรรทัด (และบันทึกลงในไฟล์ต้นฉบับ)

2
คำสั่ง sed พื้นฐานสำหรับไฟล์บรรทัดเดียวขนาดใหญ่: ไม่สามารถจัดสรรหน่วยความจำใหม่ได้
ฉันมีไฟล์ข้อความ 250 MB ทั้งหมดนี้อยู่ในบรรทัดเดียว ในไฟล์นี้ฉันต้องการแทนที่aตัวละครด้วยbตัวอักษร: sed -e "s/a/b/g" < one-line-250-mb.txt มันล้มเหลวด้วย: sed: couldn't re-allocate memory สำหรับฉันดูเหมือนว่างานประเภทนี้สามารถดำเนินการแบบอินไลน์โดยไม่ต้องจัดสรรหน่วยความจำมาก มีเครื่องมือที่ดีกว่าสำหรับงานหรือวิธีการใช้ที่ดีกว่าsedหรือไม่? GNU sed เวอร์ชั่น 4.2.1 Ubuntu 12.04.2 LTS RAM 1 GB
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.