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

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

5
จัดเรียงไฟล์ข้อความที่มีหลายบรรทัดเป็นแถว
ฉันมีไฟล์ข้อความในรูปแบบนี้: #################################### KEY2 VAL21 VAL22 VAL23 VAL24 #################################### KEY1 VAL11 VAL12 VAL13 VAL14 #################################### KEY3 VAL31 VAL32 VAL33 VAL34 ฉันต้องการเรียงลำดับไฟล์นี้ตามKEYบรรทัดและเก็บ 4 บรรทัดถัดไปไว้ในผลลัพธ์ดังนั้นผลลัพธ์ที่เรียงควรเป็น: #################################### KEY1 VAL11 VAL12 VAL13 VAL14 #################################### KEY2 VAL21 VAL22 VAL23 VAL24 #################################### KEY3 VAL31 VAL32 VAL33 VAL34 มีวิธีทำเช่นนี้หรือไม่?

6
วิธีการเปรียบเทียบสองไฟล์ที่แตกต่างกันทีละบรรทัดในยูนิกซ์?
file1: 123 234 345 456 file2: 123 234 343 758 ผลลัพธ์ที่คาดหวัง: File3: TRUE TRUE FALSE FALSE ดังนั้นรหัสควรเปรียบเทียบสองไฟล์และพิมพ์ 'TRUE' หากตรงกันมิฉะนั้นควรพิมพ์ 'FALSE' ในไฟล์ใหม่ ใครช่วยกรุณาแก้ปัญหาสำหรับเรื่องนี้?

3
วิธีตัดไฟล์ให้มีจำนวนอักขระสูงสุด (ไม่ใช่ไบต์)
ฉันจะตัดทอนไฟล์ข้อความ (UTF-8 ที่เข้ารหัส) เป็นจำนวนอักขระได้อย่างไร ฉันไม่สนใจความยาวของเส้นและการตัดอาจอยู่ตรงกลางคำ cut ดูเหมือนว่าจะทำงานบนบรรทัด แต่ฉันต้องการไฟล์ทั้งหมด head -c ใช้ไบต์ไม่ใช่ตัวอักษร

6
วิธีจัดแนวรายการให้เป็นอักขระเฉพาะ
มีคำสั่งหรือชุดคำสั่งที่ฉันสามารถใช้เพื่อจัดแนวบรรทัดข้อความให้เป็นอักขระที่กำหนดเองหรือไม่? ตัวอย่างเช่นด้วยรายการที่อยู่อีเมลเอาต์พุตจะสร้างไฟล์ข้อความที่มีอักขระ '@' ทั้งหมดเรียงเป็นแนวตั้ง จะประสบความสำเร็จฉันเชื่อว่าต้องเพิ่มจำนวนตัวแปรของช่องว่างในตอนต้นของบรรทัดส่วนใหญ่ ฉันไม่ต้องการคอลัมน์แยกเนื่องจากพวกเขาพยายามอ่านมากขึ้น (เช่นcolumn -t -s "@" < file.txt) ก่อน: 123@example.com 456789@example.net 01234@something-else.com หลังจาก: 123@example.com 456789@example.net 01234@something-else.com ใส่ที่แตกต่างกัน: ฉันสามารถระบุตัวละครที่จะเป็นจุดยึดซึ่งข้อความโดยรอบเป็นศูนย์กลางในแนวนอน? กรณีการใช้งานของฉันคือที่อยู่อีเมลเพื่อให้ง่ายต่อการสแกนด้วยสายตา


3
ค้นหาแบบไบนารีในไฟล์ข้อความที่เรียงลำดับ
ฉันมีไฟล์เรียงลำดับขนาดใหญ่ที่มีความยาวหลายพันล้านบรรทัด รับสายใหม่ฉันต้องการที่จะรู้ว่าจำนวนไบต์มันจะได้รับถ้ามันถูกรวมอยู่ในไฟล์ที่เรียง ตัวอย่าง a\n c\n d\n f\n g\n รับอินพุต 'foo' ฉันจะได้ผลลัพธ์ 9 สิ่งนี้ทำได้ง่ายเพียงแค่ทำการผ่านไฟล์ทั้งหมด แต่การที่มีความยาวของตัวแปรหลายพันล้านบรรทัดมันจะเร็วกว่าที่จะทำการค้นหาแบบไบนารี เครื่องมือการประมวลผลข้อความมีอยู่แล้วหรือไม่? แก้ไข: มันทำตอนนี้: https://gitlab.com/ole.tange/tangetools/blob/master/bsearch/bsearch

3
วิธีเพิ่มส่วนหัวและ / หรือท้ายกระดาษไปยังสตรีม sed หรือ awk
ฉันมีกลุ่มของผลลัพธ์ที่จะผ่าน sed และ awk ฉันจะนำหน้าผลลัพธ์ด้วย START และต่อท้ายคำตอบด้วย END ได้อย่างไร ตัวอย่างเช่นถ้าฉันมี All this code on all these lines and all these ฉันจะได้รับ: START All this code on all these lines and all these END ? ความพยายามของฉันคือ: awk '{print "START";print;print "END"}' แต่ฉันได้ ... START All this code END START on all these …

9
ฉันจะลบคำที่ 5 ของทุกบรรทัดในไฟล์ได้อย่างไร
ฉันต้องการลบคำที่ 5 ของแต่ละบรรทัดในไฟล์ เนื้อหาปัจจุบันของไฟล์: File is not updated or and will be removed System will shut down f within 10 seconds Please save your work 55 or copy to other location Kindly cooperate with us D ผลลัพธ์ที่คาดหวัง: File is not updated and will be removed System will shut down within …

4
วิธีใช้ sed เพื่อจัดการเอาต์พุตสตรีมมิ่งอย่างต่อเนื่อง?
ฉันกำลังรวบรวมการนำเสนอสำหรับผู้ชมที่ไม่ใช่ด้านเทคนิค ฉันมีโปรแกรมที่ทำงานในการทุบตีที่ส่งออกกระแสอย่างต่อเนื่องของค่าบางอย่างที่มีความสำคัญ ฉันต้องการเน้นผลลัพธ์ที่สำคัญตามที่ปรากฏเพื่อให้ผู้ชมได้รับแนวคิดเกี่ยวกับความถี่ของพวกเขา ปัญหาคือฉันไม่สามารถsedทำงานบนสตรีมที่กำลังทำงานอยู่ได้ มันทำงานได้ดีถ้าฉันใส่ผลลัพธ์ลงในไฟล์เช่นเดียวกับใน: cat output.txt | sed "s/some text/some text bolded/" แต่ถ้าฉันลองแบบเดียวกันกับเอาต์พุตที่กำลังทำงานอยู่เช่นนี้ command | sed "s/some text/some text bolded/" sedไม่ทำอะไรเลย ความคิดใด ๆ ขณะที่แลมเบิร์ตมีประโยชน์พอที่จะชี้ให้เห็นคำพูดของฉันที่sedไม่ทำอะไรคลุมเครือ สิ่งที่เกิดขึ้นคือการที่เอาท์พุทโปรแกรมstdout(ฉันค่อนข้างมั่นใจว่ามันไม่ได้เขียนไปstderr) sedตามที่ปกติแม้ว่ามันประปาผ่าน ปัญหาน่าจะเป็นที่คำสั่งเรียกโปรแกรมที่สองซึ่งจากนั้นส่งออกไปยัง stdout มีบางบรรทัดที่พิมพ์โดยโปรแกรมแรก สิ่งเหล่านี้ฉันสามารถแก้ไขได้ จากนั้นจะมีกระแสของค่าที่พิมพ์โดยโปรแกรมที่สอง สิ่งเหล่านี้ฉันไม่สามารถแก้ไขได้ วิธี Perl และ awk ไม่ทำงานเช่นกัน

9
เครื่องมือบรรทัดคำสั่งเพื่อ“ cat” การขยายแบบคู่ของแถวทั้งหมดในไฟล์
สมมติว่าฉันมีไฟล์ (เรียกว่า sample.txt) ที่มีลักษณะดังนี้: Row1,10 Row2,20 Row3,30 Row4,40 ฉันต้องการที่จะทำงานกับสตรีมจากไฟล์นี้ซึ่งเป็นการรวมกันแบบคู่ของทั้งสี่แถว (ดังนั้นเราควรจะจบด้วย 16 ทั้งหมด) ตัวอย่างเช่นฉันกำลังมองหาคำสั่งสตรีม (เช่นมีประสิทธิภาพ) โดยที่เอาต์พุตคือ: Row1,10 Row1,10 Row1,10 Row2,20 Row1,10 Row3,30 Row1,10 Row4,40 Row2,20 Row1,10 Row1,20 Row2,20 ... Row4,40 Row4,40 กรณีการใช้งานของฉันคือฉันต้องการสตรีมเอาต์พุตนี้ไปยังคำสั่งอื่น (เช่น awk) เพื่อคำนวณเมทริกบางส่วนเกี่ยวกับชุดค่าผสมแบบคู่นี้ ฉันมีวิธีที่จะทำสิ่งนี้ใน awk แต่ข้อกังวลของฉันคือการใช้บล็อก END {} ของฉันหมายความว่าฉันกำลังเก็บไฟล์ทั้งหมดไว้ในหน่วยความจำก่อนส่งออก รหัสตัวอย่าง: awk '{arr[$1]=$1} END{for (a in arr){ for (a2 in …

3
เหตุใด“ wc -c” จึงพิมพ์ค่าอีกหนึ่งค่าด้วย echo
เมื่อวิ่ง echo abcd | wc -c มันกลับ5มา แต่คำabcdนี้มีความยาวเพียง 4 ตัวอักษร กำลังechoพิมพ์ตัวละครพิเศษหลังจากคำว่าabcd? และฉันสามารถป้องกันไม่ให้echoพิมพ์ได้หรือไม่

5
เครื่องมือที่ไม่ใช่เชิงเส้นสำหรับการเปลี่ยนสตริง?
ฉันเพิ่งถามคำถามเกี่ยวกับวิธีการลบอักขระบรรทัดใหม่หากเกิดขึ้นหลังจากอักขระเฉพาะอื่น เครื่องมือประมวลผลข้อความ Unix นั้นมีประสิทธิภาพมาก แต่เกือบทั้งหมดจะจัดการกับบรรทัดของข้อความ แต่ฉันควรทำอย่างไรหากฉันต้องการแทนที่ลำดับข้อความในไฟล์ขนาดใหญ่ที่ไม่มีบรรทัดใหม่ ตัวอย่างเช่นแทนที่<foobar>ด้วย\n<foobar>โดยไม่ต้องอ่านอินพุตบรรทัดต่อบรรทัด? (เนื่องจากมีเพียงหนึ่งบรรทัดและมีความยาวอักขระ 2.5G)

3
แยกไฟล์ออกเป็นไฟล์ย่อย ๆ หลาย ๆ ไฟล์แยกกันด้วยสัญลักษณ์ขึ้นบรรทัดใหม่
มียูทิลิตี้ที่แยกไฟล์ด้วยสัญลักษณ์ขึ้นบรรทัดใหม่หรือไม่? เช่นถ้าไฟล์มีบรรทัดต่อไปนี้ aa bbb cccc หากฉันต้องการแยกเป็น 3 ไฟล์ผลลัพธ์ที่ต้องการจะเป็น: aa, bbbและcccc(3 ไฟล์ที่แตกต่างกัน) ฉันตรวจสอบsplitคำสั่งแล้วมันตัดเฉพาะไฟล์ตามขนาดไฟล์ไม่ใช่สิ่งที่ฉันต้องการ หากฉันไม่ได้เขียนโปรแกรมอรรถประโยชน์ด้วยตนเองมีเครื่องมือมาตรฐานที่จะใช้หรือไม่?

2
จะลบอินสแตนซ์ทั้งหมดของสัญลักษณ์เฉพาะออกจากไฟล์ข้อความได้อย่างไร
ฉันมีขนาดใหญ่มาก (ประมาณครึ่งหนึ่งของ GiB เป็นไปไม่ได้ที่จะใช้ตัวแก้ไขข้อความปกติ) ไฟล์ CSV ที่มีเขตข้อมูลล้อมรอบด้วยเครื่องหมายคำพูดคู่เช่น"abc","def"แต่ต้องการไฟล์ที่ไม่มีเครื่องหมายคำพูด (ฉันแน่ใจว่านี่จะไม่ทำลายความสอดคล้องของไฟล์) เครื่องหมายจุลภาคไม่เคยถูกใช้ภายในค่าในนั้น) วิธีลบเครื่องหมายคำพูดทั้งหมด (โดยไม่ต้องแนะนำช่องว่างในตำแหน่งของพวกเขา)?

5
วิธีการลบคำสั่งในประวัติศาสตร์ที่ตรงกับสตริงที่กำหนด?
ฉันต้องลบคำสั่งทั้งหมดในประวัติของฉันที่ตรงกับสตริง ฉันได้พยายาม: $ history | grep searchstring | cut -d" " -f2 | history -d -bash: history: -d: option requires an argument $ history | grep searchstring | cut -d" " -f2 | xargs history -d xargs: history: No such file or directory $ temparg() { while read i; do …

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