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

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

7
grep บล็อกเส้นที่แน่นอน (เนื้อหาของ file1) จาก file2
ฉันมีสองไฟล์file1และfile2. เนื้อหาตัวอย่างของfile1คือ: A B C D E F G H และเนื้อหาของfile2เป็นเช่น: A B few other lines E F few more other lines A B C D E F G H few more other lines G H ดังนั้นฉันต้องการค้นหาบล็อกทั้งหมดของfile1เนื้อหาในfile2เท่านั้น ซึ่งหมายความว่าผลลัพธ์ควรมีเพียงบรรทัดเหล่านี้: A B C D E F G H โปรดทราบว่า: - เฉพาะบรรทัดที่มารวมกันควรเป็นส่วนหนึ่งของผลลัพธ์

3
วิธีการแทนที่รหัสหลายบรรทัดด้วย sed
ฉันมีไฟล์ขนาดใหญ่ที่มีอักขระพิเศษอยู่ sedมีรหัสหลายคู่สายจะมีที่ฉันต้องการจะเปลี่ยน นี้: text = "\ ------ ------\n\n\ This message was automatically generated by email software\n\ The delivery of your message has not been affected.\n\n\ ------ ------\n\n" จำเป็นต้องเปลี่ยนเป็น: text = "" ฉันลองใช้รหัสต่อไปนี้ แต่ไม่มีโชค: sed -i '/ text = "*/ {N; s/ text = .*affected.\./ text = ""/g}' /etc/exim.conf มันไม่ได้แทนที่อะไรและไม่แสดงข้อความผิดพลาดใด ๆ …

5
วิธีการจัดกลุ่มบรรทัดในไฟล์สอง?
ฉันมีไฟล์ข้อความดังนี้: a b c d e f g ฉันจะจัดกลุ่มบรรทัดเหล่านั้นเพื่อรับเอาต์พุตดังนี้: a-b b-c c-d d-e e-f f-g ฉันต้องทำสิ่งนี้ในเปลือก (sh, csh, bash) ฉันได้พบสิ่งนี้: cat file | xargs -n2 แต่องค์ประกอบสุดท้ายของกลุ่มแรกไม่ได้กลายเป็นองค์ประกอบแรกของกลุ่มที่สอง

5
ค้นหาการเกิดขึ้นครั้งสุดท้ายของสตริงในหลายไฟล์
ฉันต้องการค้นหาไฟล์บันทึกหลายไฟล์ (ไฟล์ทั้งหมดที่สร้างใน 24 ชั่วโมงที่ผ่านมาทั้งหมดเก็บไว้ในไดเรกทอรีเดียวกัน) เพื่อค้นหาสตริงที่เกิดขึ้นครั้งล่าสุด นี่คือคำสั่งที่ฉันเขียน: find . -mtime 1 | grep fileprefix | xargs grep 'search string' | tail -1 แต่นี่จะส่งคืนบรรทัดสุดท้ายสำหรับไฟล์เดียวเท่านั้น ข้อเสนอแนะเกี่ยวกับวิธีการปรับแต่งนี้เพื่อให้ได้ทุกบรรทัด?

5
Shell Script: คว้าสตริงที่อยู่ตรงกลางของข้อความบางครั้งในตอนเริ่มต้น
ฉันมีไฟล์ข้อความขนาดใหญ่ที่ส่วนหนึ่งของมันมีลักษณะเช่นนี้ (ค่าที่แก้ไข): JULIANA XXXX006060 LI1033322 THC BRL 730.00 XXXX006296 AA1004737 THC BRL 1,740.00 SANTOS JULIANA XXXX006668 AA1004786 THC BRL 8,150.00 SANTOS JULIANA CABINDA XXXX006697 AA1004777 THC BRL 2,325.00 SANTOS JULIANA XXXX006699 AA1004790 THC BRL 2,325.00 JULIANA BATA XXXX006141 CCC012946 THC BRL 1,460.00 JULIANA BATA XXXX006153 CCC013054 THC BRL 870.00 JULIANA …


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 > …

9
เราสามารถพิมพ์คำสุดท้ายของแต่ละบรรทัดใน linux โดยใช้คำสั่ง sed ได้หรือไม่?
สมมติว่าหากมีไฟล์ประกอบด้วยบรรทัดต่อไปนี้ถ้าเป็น 12345 567 7878 66 er3 t45t y6y46y 4y6 y656y y5y 46y6 65 ปี 7 y66uyuy yy46y6y ผลลัพธ์ต้องมีลักษณะดังนี้: 66 y6y46y y5y y66uyuyy y46y6y ฉันได้ลองใช้sed 's/.* //g'ชื่อไฟล์คำสั่งและsedคำสั่งอื่น ๆแล้ว แต่มันไม่ทำงาน ฉันจะรู้ได้อย่างไรว่าsedคำสั่งที่แน่นอนคืออะไร?

1
ksh93 เร็วแค่ไหน?
โดยทั่วไปแล้วฉันมักจะมองหาการsedประมวลผลข้อความ - โดยเฉพาะอย่างยิ่งสำหรับไฟล์ขนาดใหญ่ - และมักจะหลีกเลี่ยงการทำสิ่งต่าง ๆ เหล่านั้นในเชลล์เอง แต่ฉันคิดว่ามันอาจเปลี่ยนไป ฉันแหย่ไปรอบ ๆman kshและฉันสังเกตเห็นสิ่งนี้: <#pattern Seeks forward to the beginning of the next line containing pattern. <##pattern The same as <# except that the por‐ tion of the file that is skipped is copied to standard output. ฉันสงสัยว่ามันมีประโยชน์ในโลกแห่งความเป็นจริงฉันจึงลองทำดู ฉันทำ: seq -s'foo bar ' …

5
ค้นหาสตริงและพิมพ์ทุกอย่างก่อนและหลังภายในช่วง
ฉันมีไฟล์นี้: sometext1{ string1 } sometext2{ string2 string3 } sometext3{ string4 string5 string6 } ฉันต้องการที่จะค้นหาแฟ้มนี้เพื่อหาสตริงที่เฉพาะเจาะจงและพิมพ์ทุกอย่างก่อนที่สายนี้ขึ้นอยู่กับการเปิดและทุกอย่างหลังจากที่สายนี้ถึงปิด{ }ฉันพยายามที่จะบรรลุสิ่งนี้ด้วย sed แต่ถ้าฉันพยายามพิมพ์ทุกอย่างในช่วง/{/,/string2/ตัวอย่างเช่น sed พิมพ์สิ่งนี้: sometext1{ string1 } sometext2{ string2 sometext3{ string4 string5 string6 } ถ้าฉันค้นหาสตริง "string2" ฉันต้องการผลลัพธ์เป็น: sometext2{ string2 string3 } ขอบคุณ

8
จะผนวก Line เข้ากับ Line ก่อนหน้าได้อย่างไร?
ฉันมีไฟล์บันทึกซึ่งต้องวิเคราะห์และวิเคราะห์ ไฟล์มีบางสิ่งที่คล้ายกันดังนี้: ไฟล์: 20141101 server contain dump 20141101 server contain nothing {uekdmsam ikdas jwdjamc ksadkek} ssfjddkc * kdlsdl sddsfd jfkdfk 20141101 server contain dump จากสถานการณ์ข้างต้นฉันต้องตรวจสอบว่าบรรทัดเริ่มต้นไม่มีวันที่หรือหมายเลขที่ฉันต้องต่อท้ายบรรทัดก่อนหน้า ไฟล์ที่ส่งออก: 20141101 server contain dump 20141101 server contain nothing {uekdmsam ikdas jwdjamc ksadkek} ssfjddkc * kdlsdl sddsfd jfkdfk 20141101 server contain dump

8
Grep สำหรับรูปแบบที่เริ่มต้นหรือกลางบรรทัด
ฉันจะเริ่มต้นด้วยการบอกว่าฉันคิดว่าปัญหานี้เป็นผู้บริสุทธิ์น้อยกว่าเล็กน้อยฟังดู สิ่งที่ฉันต้องทำ: ตรวจสอบโฟลเดอร์ภายในตัวแปรสภาพแวดล้อม PATH อาจเป็นตอนเริ่มต้นหรือหลังจากนั้น ฉันแค่ต้องยืนยันว่าโฟลเดอร์นั้นอยู่ที่นั่น ตัวอย่างปัญหาของฉัน - มาใช้/opt/gnomeกัน สถานการณ์ที่ 1: โฟลเดอร์ไม่ได้อยู่ที่ตำแหน่งเริ่มต้นของ PATH # echo "$PATH" /sbin:/usr/sbin:/opt/gnome:/var/opt/gnome # echo "$PATH" | grep ":/opt/gnome" /sbin:/usr/sbin:/opt/gnome:/var/opt/gnome โปรดทราบว่าความต้องการ grep /var/opt/gnomeจะเฉพาะเจาะจงมากพอเพื่อที่จะไม่จับ ดังนั้นลำไส้ใหญ่ สถานการณ์ที่ 2: โฟลเดอร์อยู่ที่จุดเริ่มต้นของ PATH # echo "$PATH" /opt/gnome:/sbin:/usr/sbin:/var/opt/gnome # echo "$PATH" | grep "^/opt/gnome" /opt/gnome:/sbin:/usr/sbin:/var/opt/gnome นี่คือปัญหาของฉัน - ฉันต้องค้นหาโคลอนหรือเริ่มต้นของบรรทัดด้วยโฟลเดอร์นี้ สิ่งที่ฉันต้องการทำคือหนึ่งในสองนิพจน์วงเล็บเหลี่ยม: # echo $PATH …

2
ฉันจะลบข้อความทั้งหมดระหว่างวงเล็บปีกกาแบบซ้อนในไฟล์ข้อความหลายบรรทัดได้อย่างไร
คำถามนี้มาจาก ฉันจะลบข้อความทั้งหมดระหว่างวงเล็บปีกกาในไฟล์ข้อความหลายบรรทัดได้อย่างไร (เหมือนกัน แต่ไม่มีข้อกำหนดสำหรับการซ้อน) ตัวอย่าง: This is { {the multiline text} file } that wants { to {be changed} } anyway. ควรเป็น: This is that wants anyway. เป็นไปได้ไหมที่จะใช้คำสั่ง bash แบบบรรทัดเดียว (awk, sed, perl, grep, cut, tr ... ฯลฯ )

1
ฉันจะพิมพ์ทั้งหมดยกเว้นบรรทัดที่ N ถึงบรรทัดสุดท้ายได้อย่างไร?
ฉันต้องการทำส่วนประกอบ / "ตรงกันข้าม" ของ sed 13q;d <file.txt โดยทั่วไปแล้วเป็นไปได้ไหมที่เราจะทำส่วนเติมเต็ม / ผกผัน / ตรงกันข้ามในนี้sedหรือไม่? หรือเฉพาะสำหรับ regexes ฉันจะพิมพ์ทั้งหมดยกเว้นบรรทัดที่สามถึงครั้งสุดท้ายได้อย่างไร สิ่งนี้ต้องใช้สองtacและนับไปข้างหน้าsedหรือไม่? หรือมีวิธีที่จะทำให้sedตัวเองนับจากด้านหลัง?

7
นับจำนวนบรรทัดทั้งหมดก่อน / หลังการจับคู่รูปแบบ
ฉันมีรายการที่อยู่ IP จำนวนมากซึ่งไม่ได้เรียงตามลำดับ ฉันต้องการค้นหาจำนวนที่อยู่ IP ที่มีอยู่ก่อน / หลังที่อยู่ IP ที่เฉพาะเจาะจง ฉันจะบรรลุสิ่งนี้ได้อย่างไร

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