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

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

11
คำสั่งพิมพ์เฉพาะอักขระ 3 ตัวสุดท้ายของสตริง
ฉันรู้ว่าcutคำสั่งสามารถพิมพ์nอักขระตัวแรกของสตริง แต่จะเลือกnอักขระตัวสุดท้ายได้อย่างไร? หากฉันมีสตริงที่มีจำนวนอักขระผันแปรฉันจะพิมพ์อักขระสามตัวสุดท้ายของสตริงได้อย่างไร เช่น. เอาต์พุต "ไม่ จำกัด " ที่ต้องการคือ "ted" จำเป็นต้องใช้เอาต์พุต "987654" คือ "654" จำเป็นต้องใช้เอาต์พุต "123456789" คือ "789"

7
ฉันจะแทรกช่องว่างทุกสี่อักขระในบรรทัดยาวได้อย่างไร
ฉันมีเส้นยาวที่ฉันต้องการแทรกช่องว่างทุก ๆ 4 ตัวอักษรในข้อความทึบเส้นเดียวเพื่อให้อ่านง่ายขึ้นวิธีที่ง่ายที่สุดในการทำเช่นนี้คืออะไร? นอกจากนี้ฉันควรจะสามารถป้อนบรรทัดจากท่อ เช่น echo "foobarbazblargblurg" | <some command here> จะช่วยให้ foob arba zbla rgbl urg

2
ลบบรรทัดตามรายการที่ซ้ำกันภายในหนึ่งคอลัมน์โดยไม่มีการเรียงลำดับ
ฉันมีไฟล์ 3 คอลัมน์ขนาดใหญ่ (~ 10,000 บรรทัด) และฉันต้องการลบบรรทัดเมื่อเนื้อหาของคอลัมน์ที่สามของบรรทัดนั้นปรากฏในคอลัมน์ที่สามของอีกบรรทัดหนึ่ง ขนาดของไฟล์นั้นค่อนข้างยุ่งยากและฉันไม่สามารถใช้บางอย่างเช่นโค้ดด้านล่างได้เพราะทั้งบรรทัดนั้นไม่เหมือนกัน แค่เนื้อหาของคอลัมน์ 3 awk '!seen[$0]++' filename

5
ฉันจะเพิ่มบรรทัดใหม่ระหว่างบรรทัดที่พิมพ์บนบรรทัดคำสั่งได้อย่างไร
บันทึกเมลอ่านยากอย่างไม่น่าเชื่อ ฉันจะส่งออกบรรทัดว่างระหว่างแต่ละบรรทัดที่พิมพ์บนบรรทัดคำสั่งได้อย่างไร ตัวอย่างเช่นฉันกำลังพิมพ์บันทึก ด้วยวิธีนี้หลายบรรทัดที่พันกันจะไม่สับสน

6
จะลบบรรทัดที่สั้นกว่า XY ได้อย่างไร
ฉันพบคำถามเกี่ยวกับวิธีลบบรรทัดที่ยาวกว่า 2048 ตัวอักษร: วิธีลบบรรทัดถ้ายาวกว่า XY ถาม:แต่ฉันจะลบเส้นที่สั้นกว่าตัวอักษร 4 ตัวได้อย่างไร ดังนั้นลบบรรทัดที่มีความยาว 1 หรือ 2 หรือ 3 ไฟล์ อัปเดต: ขอบคุณสำหรับคำตอบที่ดีมากมาย แต่ฉันสามารถทำเครื่องหมายว่าตกลงเท่านั้น

12
ฉันจะเขียนไปยังบรรทัดที่สองของไฟล์จากบรรทัดคำสั่งได้อย่างไร
ฉันมีโปรแกรมภายนอกที่สร้างไฟล์เอาต์พุต (เป็นไปได้มากถึง 20K บรรทัด) ฉันต้องการแทรกบรรทัดใหม่ระหว่างบรรทัดที่ 1 ที่มีอยู่และบรรทัดที่ 2 ฉันดู awk และ sed - ฉันใช้ liners หนึ่งตัวในแต่ละข้อพอสมควร - แต่ฉันไม่สามารถหาสวิตช์ที่ถูกต้องได้ ทำเช่นนี้.

4
แปลงฐาน BASH จากฐานสิบเป็นฐานสิบหก
ในทุบตีวิธีการหนึ่งจะทำแปลงฐานจากทศนิยมเพื่อฐานอีกหกเหลี่ยมโดยเฉพาะอย่างยิ่ง ดูเหมือนจะเป็นวิธีที่ง่ายกว่า: $ echo $((16#55)) 85 ด้วยการค้นเว็บฉันพบสคริปต์ที่ใช้การคำนวณทางคณิตศาสตร์และตัวละครเพื่อทำการแปลงและฉันสามารถใช้มันเป็นฟังก์ชั่นได้ แต่ฉันคิดว่าทุบตีจะมีการแปลงฐานในตัวแล้ว - ทำมัน?

3
การใช้ sed เพื่อระบายสีเอาต์พุตจากคำสั่งบน solaris
ฉันมีสคริปต์ ksh ที่ต้องทำงานกับทั้ง linux และ solaris ฉันกำลังพยายามระบายสีผลลัพธ์ของคำสั่งเฉพาะ ใช้งานได้กับ linux (โดยเฉพาะ RHEL6) แต่ไม่ใช้กับ Solaris (SunOS 5.10) คำสั่งบน linux (ผลลัพธ์ "test" เป็นสีแดงที่ถูกต้อง): [amartin@linuxbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,' test คำสั่งเกี่ยวกับโซลาริส (ผลลัพธ์ "การทดสอบ" ไม่มีสี) [amartin@sunbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,' x1B[31mtestx1B[0m มีวิธีการสร้างคำสั่งนี้ว่าเอาท์พุทเป็นสีแดงโดยไม่ต้องรหัสดิบในการส่งออก? ฉันไม่สามารถเปลี่ยนคำสั่ง 'echo' ได้เพราะนั่นเป็นเพียงการกรอกคำสั่งที่ฉันใช้อยู่

4
จะทำ 'wc -l' อย่างต่อเนื่องกับ gnu texttools ได้อย่างไร?
ฉันรู้แน่นอนว่า cat logfile.txt | wc -l 120 จะบอกจำนวนบรรทัดในไฟล์ให้ฉัน แต่ทว่า tail -f logfile.txt จะแสดงบรรทัดใหม่ที่โปรแกรมอื่นเขียนถึงlogfile.txtฉัน เป็นไปได้หรือไม่ที่จะรวมทั้งสองอย่างเพื่อให้ฉันได้รับการนับจำนวนบรรทัดใหม่อย่างต่อเนื่องของ logfile.txt ด้วยยูทิลิตี้ข้อความมาตรฐาน? ฉันรู้เกี่ยวกับ watch wc -l logfile.txt แต่ฉันไม่ต้องการนับไฟล์ใหม่ทุกครั้งที่ดูเหมือนว่าจะเป็นการสิ้นเปลือง หนึ่งจะต้องมีการผนวกเพียงนับทุกวินาทีหรือมากกว่านั้นและอาจจะ\rแทนที่จะเป็น\nในตอนท้ายของบรรทัด

5
ลบช่วงของบรรทัดด้านบนรูปแบบด้วย sed (หรือ awk)
ฉันมีรหัสต่อไปนี้ที่จะลบบรรทัดที่มีรูปแบบbananaและ 2 บรรทัดหลังจากนั้น: sed '/banana/I,+2 d' file จนถึงตอนนี้ดีมาก! แต่ฉันต้องการมันเพื่อลบ 2 บรรทัดก่อนหน้า bananaแต่ฉันไม่สามารถรับมันด้วย "เครื่องหมายลบ" หรืออะไรก็ตาม (คล้ายกับสิ่งที่grep -v -B2 banana fileควรทำ แต่ไม่ได้ทำ): teresaejunior@localhost ~ > LC_ALL=C sed '-2,/banana/I d' file sed: invalid option -- '2' teresaejunior@localhost ~ > LC_ALL=C sed '/banana/I,-2 d' file sed: -e expression #1, char 16: unexpected `,' teresaejunior@localhost …

4
ฉันจะลบบรรทัดที่แน่นอน (โดยใช้หมายเลขบรรทัด) ในไฟล์ได้อย่างไร
มีบรรทัดเฉพาะที่ฉันต้องการลบออกจากไฟล์ สมมุติว่ามันเป็นบรรทัดที่ 20-37 แล้วก็บรรทัดที่ 45 ฉันจะทำอย่างไรโดยไม่ระบุเนื้อหาของบรรทัดเหล่านั้น

11
จะต้องมีวิธีที่ดีกว่าในการแทนที่บรรทัดใหม่เดียวเท่านั้นหรือ
ฉันติดนิสัยการเขียนหนึ่งบรรทัดต่อประโยคเพราะปกติแล้วฉันจะรวบรวมสิ่งต่าง ๆ ให้กับ LaTex หรือฉันกำลังเขียนในรูปแบบอื่นที่มีการละเว้นบรรทัด ฉันใช้บรรทัดว่างเพื่อระบุจุดเริ่มต้นของย่อหน้าใหม่ ตอนนี้ฉันมีไฟล์ที่เขียนในลักษณะนี้ซึ่งฉันต้องการส่งเป็นข้อความธรรมดา ฉันต้องการที่จะลบ linebreaks เดียวทั้งหมด แต่ปล่อยให้ linebreaks สองครั้งเหมือนเดิม นี่คือสิ่งที่ฉันทำ: sed 's/$^/NEWLINE/' file.txt | awk '{printf "%s ",$0}' | sed 's/NEWLINE/\n\n/g' > linebreakfile.txt สิ่งนี้แทนที่บรรทัดว่างด้วยข้อความบางอย่างที่ฉันมั่นใจว่าจะไม่ปรากฏในไฟล์: NEWLINEจากนั้นมันจะกำจัดตัวแบ่งบรรทัดทั้งหมดด้วย awk (ฉันพบเคล็ดลับในบางเว็บไซต์) จากนั้นมันจะแทนที่NEWLINEs ด้วยบรรทัดที่จำเป็นสองบรรทัด . ดูเหมือนว่าจะเป็นวิธีที่ยืดยาวในการทำสิ่งที่เรียบง่าย มีวิธีที่ง่ายกว่านี้ไหม? นอกจากนี้หากมีวิธีการแทนที่ช่องว่างหลาย ๆ ช่อง (ซึ่งบางครั้งอาจคืบไปด้วยเหตุผลบางอย่าง) ด้วยช่องว่างเดียวนั่นก็จะดีเช่นกัน ฉันใช้ emacs ดังนั้นหากมีเคล็ดลับเฉพาะของ emac ที่ดี แต่ฉันอยากเห็นรุ่นที่บริสุทธิ์หรือรุ่น awk ที่บริสุทธิ์

13
แปลง CSV เป็น TSV
ฉันมีไฟล์ CSV จำนวนมากและต้องการให้เป็น TSV (รูปแบบที่คั่นด้วยแท็บ) ภาวะแทรกซ้อนคือมีเครื่องหมายจุลภาคในฟิลด์ของไฟล์ CSV เช่น: A,,C,"D,E,F","G",I,"K,L,M",Z ผลลัพธ์ที่คาดหวัง: A C D,E,F G I K,L,M Z (ที่ช่องว่างในระหว่างนั้นเป็นแท็บ 'ยาก') ฉันมี Perl, Python และ coreutils ติดตั้งอยู่บนเซิร์ฟเวอร์นี้


3
วิธีการจัดเรียงสตริงที่รวมกับสตริง + ตัวเลขโดยใช้สคริปต์ทุบตี?
นี่คือข้อมูลที่ฉันต้องการเรียงลำดับ แต่sortปฏิบัติต่อตัวเลขกับสตริงข้อมูลที่ไม่เรียงตามที่ฉันคาดไว้ / home / files / profile1 / home / files / profile10 / home / files / profile11 / home / files / profile12 / home / files / profile14 / home / files / profile15 / home / files / profile16 / home / files / profile2 …

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