คำถามติดแท็ก text-processing

การจัดการหรือตรวจสอบข้อความโดยโปรแกรมสคริปต์ ฯลฯ

1
วิธีการ“ grep” สำหรับความยาวบรรทัด * ไม่ใช่ * ในช่วงที่กำหนด
หมายเหตุ:คำถามนี้เป็นส่วนเติมเต็มของคำถาม & คำตอบนี้: "grep" สำหรับความยาวบรรทัดในช่วงที่กำหนดได้อย่างไร เราจะ grep สำหรับบรรทัดที่มีน้อยกว่า 8 หรือมากกว่า 63 ตัวอักษรได้อย่างไรไม่มีที่มีมากกว่าแปดและน้อยกว่า 63 ตัว? ดังนั้นการนับจำนวนอักขระที่ยอมรับได้อาจเป็น ... 7 6 5 4 3 2 1 0 ...และ... 64 65 66 67 ...

4
ค้นหาข้อความระหว่างอักขระหรือสตริงที่ระบุสองตัว
พูดว่าฉันมีสายเช่นนี้: *[234]* *[23]* *[1453]* โดยที่*แสดงถึงสตริงใด ๆ (ยกเว้นสตริงของฟอร์ม[number]) ฉันจะแยกวิเคราะห์บรรทัดเหล่านี้ด้วยยูทิลิตีบรรทัดคำสั่งและแยกตัวเลขระหว่างวงเล็บได้อย่างไร มากกว่าปกติซึ่งเครื่องมือเหล่านี้cut, sed, grepหรือawkจะเป็นที่เหมาะสมสำหรับงานดังกล่าวหรือไม่

6
คำสั่งเช่น `column -t 'ที่เก็บตัวคั่นเอาท์พุทแทน
ฉันกำลังแก้ไขตารางอย่างง่าย ฉันต้องการรูปแบบที่ดี ในขณะที่ฉันสามารถใช้tbl, latexหรือที่คล้ายกันนี้ดูเหมือนว่า overkill - ข้อความธรรมดาจริงๆก็เพียงพอแล้ว เพราะมันง่ายฉันก็อาจมีแหล่งที่มาเป็นเอาท์พุท ดังนั้นแหล่งที่มาควรดูดีเช่นกัน ดูเหมือนว่ามันควรจะเป็นงานที่สมบูรณ์แบบสำหรับcolumn -s '|' -t- พบตัวคั่นและแทรกช่องว่างโดยอัตโนมัติเพื่อจัดตำแหน่งตามความกว้างสูงสุดในแต่ละคอลัมน์ น่าเสียดายที่มันลบตัวคั่นดังนั้นฉันจึงไม่สามารถรันอีกครั้งหลังจากแก้ไขเพิ่มเติม มีเครื่องมือการประมวลผลข้อความที่ดีที่สามารถทำ idempotently นี้เพื่อให้เป็นผลลัพธ์หรือไม่ หรือฉันจะต้องเขียนของตัวเอง? แก้ไข: นี่คือตัวอย่างของสิ่งที่ฉันต้องการ: foo | bar | baz abc def | 12 | 23456 ควรกลายเป็น foo | bar | baz abc def | 12 | 3456 เมื่อ' 'ใดที่ทั้งตัวคั่นและตัวเว้นวรรคcolumn -tทำงานได้ดี แต่รายการของฉันมีช่องว่างในนั้นฉันจึงใช้ไม่ได้ การมียานอวกาศแตกต่างจากตัวแยกทำให้สิ่งต่าง ๆ …

7
ทำซ้ำแต่ละบรรทัดหลายครั้ง
ต้องการให้แต่ละบรรทัดในไฟล์ซ้ำกันหลายครั้ง เช่นให้แต่ละบรรทัดทำซ้ำสี่ครั้ง: a b c กลายเป็น: a a a a b b b b c c c c ฉันได้ทำการค้นหาแล้วและมีคำถามและคำตอบมากมายในแนวของการย้อนกลับเช่นการรวมบรรทัดที่ซ้ำกันเป็นบรรทัดเดียว มันง่ายที่จะทำใน C แต่ฉันหวังว่าฉันจะรู้มากขึ้นเกี่ยวกับคำสั่งดั้งเดิมดังนั้นฉันจึงไม่ต้องหันไปใช้วิธีการโยนครั้งเดียวแบบนี้ตลอดเวลา

2
แยกส่วนตรงกลางของบรรทัดของไฟล์ข้อความหรือไม่
ฉันกำลังเขียนสคริปต์ PHP เพื่อแยกไฟล์ข้อความขนาดใหญ่เพื่อแทรกฐานข้อมูลจากมัน อย่างไรก็ตามในโฮสต์ของฉันไฟล์มีขนาดใหญ่เกินไปและฉันใช้หน่วยความจำเกินขีด จำกัด สำหรับ PHP ไฟล์นี้มีประมาณ 16,000 บรรทัด ฉันต้องการแยกไฟล์ออกเป็นสี่ไฟล์ (ตอนแรก) เพื่อดูว่าฉันสามารถโหลดไฟล์เหล่านั้นได้หรือไม่ head -4000 file.txtส่วนแรกที่ผมจะได้รับกับ ส่วนตรงกลางนั้นค่อนข้างซับซ้อนกว่าเดิม - ฉันคิดถึงการtailส่งออกpip ไปยังhead( tail -4001 file.txt | head -4000 > section2.txt) แต่มีวิธีอื่นหรือดีกว่า อันที่จริงตรรกะของฉันถูกทำให้ยุ่งเหยิง - สำหรับส่วนที่สองฉันต้องมีบางอย่างที่ชอบtail -12001 file.txt | head - 4000แล้วลดtailอาร์กิวเมนต์สำหรับส่วนถัดไป ฉันเริ่มสับสนแล้ว! : P

4
ฉันจะ grep โดยไม่มีช่องว่างนำหน้าได้อย่างไร
ฉันกำลัง greping ผ่าน codebase ขนาดใหญ่และ whitespaces และ tabulation ชั้นนำดูเหมือนจะค่อนข้างน่ารำคาญ มีวิธีใดที่จะกำจัดมันได้หรือไม่? grep -R "something" ./ เช่นแทนที่จะเป็น: foo/bar.cpp: qwertyuiosomethingoi foo/bar/baz.h: 43rfsgsomethingdrfg bar/bar.cpp: 1234edwssomethingczd ฉันต้องการได้รับ: foo/bar.cpp: qwertyuiosomethingoi foo/bar/baz.h: 43rfsgdsomethingrfg bar/bar.cpp: 1234edwssomethingczd หรือดีกว่า: foo/bar.cpp: qwertyuisomethingooi foo/bar/baz.h: 43rfsgdrsomethingfg bar/bar.cpp: 1234edwssomethingczd

3
กำลังมองหาตำราเรียนเครื่องมือ Unix แบบเก่า
ฉันกำลังมองหาหนังสือเกี่ยวกับชุดเครื่องมือบรรทัดคำสั่ง Unix (sh, grep, sed, awk, cut, ฯลฯ ) ที่ฉันอ่านเมื่อไม่นานมานี้ มันเป็นหนังสือที่ยอดเยี่ยม แต่ฉันลืมชื่อทั้งหมด สิ่งที่ยอดเยี่ยมเกี่ยวกับหนังสือเล่มนี้คือตัวอย่างการรัน มันแสดงให้เห็นถึงวิธีการใช้ระบบการทำบัญชีมหาวิทยาลัยโดยใช้เครื่องมือการประมวลผลข้อความเท่านั้น คุณจะพบนักเรียนด้วยชื่อที่มี grep อัปเดตเกรดด้วย sed คำนวณคะแนนเฉลี่ยด้วย awk แนบคะแนนไปยัง ID ที่ตัดและอื่น ๆ หากความทรงจำของฉันให้บริการหนังสือเล่มนี้มีหน้าปกสีดำและได้รับการตีพิมพ์ในปี 1980 ไม่มีใครจำหนังสือเล่มนี้ได้หรือไม่ ฉันขอขอบคุณความช่วยเหลือในการค้นหามัน

9
เปลี่ยนรายการเป็นบรรทัดเดียวด้วยตัวคั่น
ฉันต้องจดรายการ (โหลด) ที่อยู่ IP ในรูปแบบนี้: 134.27.128.0 111.245.48.0 109.21.244.0 และแปลงเป็นรูปแบบนี้โดยใช้ไพพ์อยู่ระหว่าง (สร้าง IP) 134.27.128.0 | 111.245.48.0 | 109.21.244.0 | 103.22.200.0/22 ฉันคิดว่ามันเป็นคำสั่งค้นหาและแทนที่sedแต่ฉันไม่สามารถใช้งานได้

3
แทนที่สตริงหลายบรรทัดในไฟล์
ฉันมีไฟล์จำนวนหนึ่งที่ฉันต้องการอัปเดตโดยแทนที่สตริงหลายบรรทัดหนึ่งด้วยสตริงอื่นหลายบรรทัด บางสิ่งบางอย่างตาม: * Some text, * something else * another thing และฉันต้องการแทนที่ด้วย: * This is completely * different text ผลที่ตามมาก็คือหลังจากการแทนที่ไฟล์ที่มีบล็อกแรกของข้อความตอนนี้จะมีสตริงที่สอง (ส่วนที่เหลือของไฟล์ไม่เปลี่ยนแปลง) ส่วนหนึ่งของปัญหาคือฉันต้องค้นหารายชื่อไฟล์ที่จะอัพเดทในระบบไฟล์ ฉันเดาว่าฉันสามารถใช้ grep สำหรับสิ่งนั้นได้ (แม้ว่าจะไม่ใช่เรื่องง่ายที่จะทำกับสตริงหลายบรรทัด) จากนั้นลองใช้ greid หรือไม่? มีวิธีง่าย ๆ ในการทำเช่นนี้? Sed เป็นตัวเลือก แต่มันน่าอึดอัดใจเพราะฉันต้องเพิ่ม \ n ฯลฯ มีวิธีที่จะพูดว่า "รับอินพุตจากไฟล์นี้จับคู่กับไฟล์เหล่านั้นจากนั้นแทนที่ด้วยเนื้อหาของไฟล์อื่นนี้" หรือไม่? ฉันสามารถใช้ python ถ้าจำเป็น แต่ฉันต้องการบางสิ่งที่รวดเร็วและง่ายดายดังนั้นหากมียูทิลิตีที่มีอยู่ฉันอยากจะใช้สิ่งนั้นมากกว่าเขียนสคริปต์ของตัวเอง (ซึ่งฉันรู้วิธีการทำ)

3
นับค่าที่แตกต่างของฟิลด์ในไฟล์
ฉันมีไฟล์มีจำนวนบรรทัดมากกว่าล้านบรรทัด ในบรรทัดฉันมีเขตข้อมูลที่เรียกว่าtransactionidซึ่งมีค่าซ้ำ สิ่งที่ฉันต้องทำคือนับพวกเขาอย่างชัดเจน ไม่ว่าจะมีค่าซ้ำกี่ครั้งก็ควรนับเพียงครั้งเดียว

5
ฉันจะลบทุกอย่างได้จนกว่าจะมีรูปแบบและทุกอย่างหลังจากรูปแบบอื่นจากบรรทัดได้อย่างไร
ในไฟล์ต่อไปนี้: Lorem ipsum dolor amet amet, consectetuer adipiscing elit เป็นตัวบ่งชี้ที่ดีที่สุดของคุณ Maecenas rhoncus ฉันต้องการลบทุกอย่างก่อนconsectetuerและทุกอย่างหลังจากelitนั้น ผลลัพธ์ที่ฉันต้องการ: consectetuer adipiscing elit. ฉันจะทำสิ่งนี้ได้อย่างไร

10
ลบอักขระบรรทัดใหม่เฉพาะทุกบรรทัด N
กำลังประมวลผลข้อความฉันต้องลบอักขระบรรทัดใหม่ทุกสองบรรทัด ข้อความตัวอย่าง: this is line one and this is line two the third and the fourth must be pasted too ผลลัพธ์ที่ต้องการ: this is line one and this is line two the third and the fourth must be pasted too ฉันพยายามwhileลูป แต่ในขณะที่ลูปคือการปฏิบัติที่ไม่ดี เป็นไปได้ที่จะใช้trหรือคำสั่งอื่น ๆ ?

12
ลบบรรทัดที่ซ้ำกันเป็นคู่หรือไม่
ฉันพบกรณีใช้งานวันนี้ มันดูเหมือนง่ายได้อย่างรวดเร็วก่อน แต่เล่นซอรอบกับsort, uniq, sedและawkเผยให้เห็นว่ามันเป็นขี้ปะติ๋ว ฉันจะลบบรรทัดที่ซ้ำกันทุกคู่ได้อย่างไร กล่าวอีกนัยหนึ่งหากมีจำนวนซ้ำของบรรทัดที่กำหนดให้ลบทั้งหมด; หากมีจำนวนบรรทัดที่ซ้ำกันเป็นเลขคี่ลบทั้งหมดยกเว้นหนึ่งบรรทัด (สามารถป้อนข้อมูลการเรียงลำดับได้) วิธีการแก้ปัญหาที่สง่างามสะอาดเป็นที่ต้องการ อินพุตตัวอย่าง: a a a b b c c c c d d d d d e ตัวอย่างผลลัพธ์: a d e

10
ฉันจะรวมตัวเลขทั้งหมดในไฟล์ได้อย่างรวดเร็วได้อย่างไร
แต่ละบรรทัดประกอบด้วยข้อความและตัวเลขในหนึ่งคอลัมน์ ฉันต้องคำนวณผลรวมของตัวเลขในแต่ละแถว ฉันจะทำสิ่งนั้นได้อย่างไร ขอบคุณ example.log ประกอบด้วย: time=31sec time=192sec time=18sec time=543sec คำตอบควรเป็น784

4
รวมไฟล์ข้อความสองไฟล์เข้าด้วยกันเพื่อเพิ่มตัวคั่นบางส่วนใช่หรือไม่
cat file1 file2จะรวมสองไฟล์ข้อความ แต่ถ้าฉันต้องการเพิ่มตัวคั่นบางส่วนระหว่าง********************************ฉันต้องเปิดไฟล์แรกและเพิ่มบรรทัดที่จุดสิ้นสุดหรือเปิดไฟล์ที่สองและเพิ่มบรรทัดที่ด้านบนสุดแล้วเรียกใช้catคำสั่ง? สามารถใช้คำสั่งรันคำสั่งได้หรือไม่?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.