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

8
แยกไฟล์ข้อความเป็นบรรทัดที่มีจำนวนคำคงที่
ที่เกี่ยวข้อง แต่ไม่มีคำตอบที่น่าพอใจ: ฉันจะแยกไฟล์ข้อความขนาดใหญ่เป็นชิ้น ๆ จำนวน 500 คำได้อย่างไร ฉันพยายามที่จะใช้ไฟล์ข้อความ ( http://mattmahoney.net/dc/text8.zip ) ด้วย> 10 ^ 7 คำทั้งหมดในบรรทัดเดียวและแยกเป็นบรรทัดด้วยคำที่ไม่มีคำแต่ละคำ วิธีการปัจจุบันของฉันใช้งานได้ แต่ค่อนข้างช้าและน่าเกลียด (ใช้เชลล์สคริปต์): i=0 for word in $(sed -e 's/\s\+/\n/g' input.txt) do echo -n "${word} " > output.txt let "i=i+1" if [ "$i" -eq "1000" ] then echo > output.txt let "i=0" fi done …

7
แยกต้นไม้ไดเรกทอรีขนาดใหญ่เป็นชิ้นขนาดที่ระบุหรือไม่
ฉันมีแผนผังไดเรกทอรีที่ฉันต้องการสำรองดิสก์แสง น่าเสียดายที่มันมีขนาดเกินกว่าดิสก์หนึ่งแผ่น (มีขนาดประมาณ 60GB) ฉันกำลังมองหาสคริปต์ที่จะแบ่งต้นไม้นี้เป็นชิ้นขนาดที่เหมาะสมด้วยการเชื่อมโยงอย่างหนักหรือ whatnot (ออกจากเดิมไม่มีใครแตะต้อง) ฉันสามารถป้อนต้นไม้ขนาดกัดเหล่านี้ลงในกระบวนการสำรองข้อมูล (เพิ่มความซ้ำซ้อน PAR2 และอื่น ๆ ) มันไม่ใช่สคริปต์แฟนซี แต่ดูเหมือนว่ามันอาจจะทำไปแล้ว ข้อเสนอแนะ? (การขยายและการเขียนในขั้นตอนเดียวเป็นเรื่องไม่ต้องทำเพราะฉันต้องการทำสิ่งต่าง ๆ เพิ่มเติมก่อนที่ไฟล์จะถูกเบิร์น)

4
การสร้างสตรีมเอาต์พุตเดี่ยวจากสามสตรีมอื่นที่สร้างแบบขนาน
ฉันมีข้อมูลสามชนิดที่มีรูปแบบต่างกัน สำหรับแต่ละชนิดข้อมูลมีสคริปต์ Python ที่แปลงเป็นรูปแบบรวมเป็นหนึ่งเดียว สคริปต์ Python นี้ช้าและ CPU ที่ถูกผูกไว้ (เพื่อหลักเดียวในเครื่องแบบ multi-core) ดังนั้นฉันต้องการที่จะทำงานสามกรณีของมัน - หนึ่งสำหรับแต่ละชนิดข้อมูล - sortและรวมการส่งออกของพวกเขาจะผ่านมันเข้าไป โดยทั่วไปเทียบเท่ากับสิ่งนี้: { ./handle_1.py; ./handle_2.py; ./handle_3.py } | sort -n แต่ด้วยสามสคริปต์ที่ทำงานในแบบคู่ขนาน ฉันพบคำถามนี้ที่ GNU splitถูกใช้เพื่อปัดเศษสตรีม stdout บางส่วนระหว่าง n อินสแตนซ์ของสคริปต์ที่จัดการสตรีม จากหน้าแยกคน: -n, --number=CHUNKS generate CHUNKS output files. See below CHUNKS may be: N split into N files …

1
การประมาณไฟล์ที่ไม่บีบอัดผิดหรือ?
ฉันมีไฟล์บีบอัดขนาดใหญ่ (~ 60G) ( tar.gz) ฉันเคยsplitแบ่งมันออกเป็น 4 ส่วนจากนั้นจึงcatกลับมารวมกัน อย่างไรก็ตามตอนนี้เมื่อฉันพยายามที่จะประมาณขนาดของไฟล์ที่ไม่มีการบีบอัดมันกลับกลายเป็นว่ามันเล็กกว่าเดิมหรือไม่? เป็นไปได้อย่างไร? $ gzip -l myfile.tar.gz compressed uncompressed ratio uncompressed_name 60680003101 3985780736 -1422.4% myfile.tar

7
วิธีการแยกไฟล์ข้อความขนาดใหญ่อย่างมีประสิทธิภาพโดยไม่ต้องแยกหลายระเบียน
ฉันมีไฟล์ข้อความขนาดใหญ่ (~ 50Gb เมื่อ gz'ed) ไฟล์มี4*Nเส้นหรือNบันทึก นั่นคือทุกระเบียนประกอบด้วย 4 บรรทัด ฉันต้องการแบ่งไฟล์นี้เป็นไฟล์ขนาดเล็กลง 4 ไฟล์แต่ละไฟล์มีขนาดประมาณ 25% ของไฟล์อินพุต ฉันจะแบ่งไฟล์ที่ขอบเขตการบันทึกได้อย่างไร? วิธีการที่ไร้เดียงสาจะเป็นzcat file | wc -lที่จะได้รับการนับเส้นแบ่งว่าจำนวน 4 split -l <number> fileและการใช้งานแล้ว อย่างไรก็ตามสิ่งนี้จะข้ามไฟล์สองครั้งและการนับบรรทัดช้ามาก (36 นาที) มีวิธีที่ดีกว่า? นี่เข้ามาใกล้ แต่ไม่ใช่สิ่งที่ฉันกำลังมองหา คำตอบที่ยอมรับจะนับจำนวนบรรทัดด้วย แก้ไข: ไฟล์มีข้อมูลลำดับในรูปแบบ fastq สองระเบียนมีลักษณะเช่นนี้ (ไม่ระบุชื่อ): @NxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxGCGA+ATAGAGAG xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTTTATGTTTTTAATTAATTCTGTTTCCTCAGATTGATGATGAAGTTxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + AAAAA#FFFFFFFFFFFFAFFFFF#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF<AFFFFFFFFFFAFFFFFFFFFFFFFFFFFFF<FFFFFFFFFAFFFAFFAFFAFFFFFFFFAFFFFFFAAFFF<FAFAFFFFA @NxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxGCGA+ATAGAGAG xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxCCCTCTGCTGGAACTGACACGCAGACATTCAGCGGCTCCGCCGCCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + AAAAA#FFFFF7FFFFFFAFFFFA#F7FFFFFFFFF7FFFFFAF<FFFFFFFFFFFFFFAFFF.F.FFFFF.FAFFF.FFFFFFFFFFFFFF.)F.FFA))FFF7)F7F<.FFFF.FFF7FF<.FFA<7FA.<.7FF.FFFAFF @บรรทัดแรกของแต่ละระเบียนจะเริ่มต้นด้วย EDIT2: zcat file > …

4
การใช้ GNU Parallel พร้อม Split
ฉันกำลังโหลดไฟล์ขนาดมหึมาไปยังฐานข้อมูล postgresql การทำเช่นนี้ผมใช้งานครั้งแรกsplitในแฟ้มที่จะได้รับไฟล์ขนาดเล็ก (30GB) และแล้วผมโหลดแต่ละไฟล์ขนาดเล็กเพื่อใช้ฐานข้อมูลและGNU Parallelpsql copy ปัญหาคือว่าจะใช้เวลาประมาณ 7 ชั่วโมงในการแบ่งไฟล์แล้วจึงเริ่มโหลดไฟล์ต่อหนึ่งคอร์ สิ่งที่ฉันต้องการคือวิธีที่จะบอกsplitให้พิมพ์ชื่อไฟล์ไปยังเอาต์พุต std ทุกครั้งที่มันเสร็จสิ้นการเขียนไฟล์เพื่อที่ฉันจะได้ไพพ์ไปParallelและมันก็เริ่มโหลดไฟล์ในเวลาที่splitเขียนมันเสร็จ บางสิ่งเช่นนี้ split -l 50000000 2011.psv carga/2011_ | parallel ./carga_postgres.sh {} ฉันอ่านsplitman pages แล้วและฉันไม่พบอะไรเลย มีวิธีการทำเช่นนี้กับsplitหรือเครื่องมืออื่น ๆ ?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.