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

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

6
การกรอง utf8 ที่ไม่ถูกต้อง
ฉันมีไฟล์ข้อความในการเข้ารหัสที่ไม่รู้จักหรือแบบผสม ฉันต้องการดูบรรทัดที่มีลำดับไบต์ที่ไม่ถูกต้อง UTF-8 (โดยไพพ์ไฟล์ข้อความลงในบางโปรแกรม) เท่ากันฉันต้องการกรองบรรทัดที่ถูกต้อง UTF-8 ในคำอื่น ๆ ฉันกำลังมองหาgrep [notutf8] ทางออกที่ดีที่สุดคือพกพาได้สั้นและปรับเปลี่ยนได้ทั่วไปสำหรับการเข้ารหัสอื่น ๆ แต่ถ้าคุณรู้สึกว่าวิธีที่ดีที่สุดคือการอบในนิยามของ UTF-8ไปได้เลย

10
จะทดสอบได้อย่างไรว่าไฟล์ใช้ CRLF หรือ LF โดยไม่ต้องดัดแปลงไฟล์?
ฉันต้องเรียกใช้คำสั่งเป็นระยะเพื่อให้แน่ใจว่าไฟล์ข้อความบางไฟล์ถูกเก็บไว้ในโหมด Linux น่าเสียดายที่dos2unixมักจะแก้ไขไฟล์ซึ่งจะทำให้ไฟล์และไฟล์บันทึกเวลาของไฟล์เลอะและทำให้เกิดการเขียนที่ไม่จำเป็น สคริปต์ที่ฉันเขียนนั้นอยู่ใน Bash ดังนั้นฉันต้องการคำตอบจาก Bash

13
วิธีการพิมพ์ทุกบรรทัดหลังจากการจับคู่ถึงจุดสิ้นสุดของไฟล์?
อินพุตไฟล์ 1 คือ: dog 123 4335 cat 13123 23424 deer 2131 213132 bear 2313 21313 ฉันให้รูปแบบตรงกันจากในother file(เช่นdog 123 4335จาก file2) ฉันตรงกับรูปแบบของเส้นคือdog 123 4335และหลังจากพิมพ์ทุกบรรทัดโดยไม่ต้องจับคู่บรรทัดผลลัพธ์ของฉันคือ: cat 13123 23424 deer 2131 213132 bear 2313 21313 หากใช้เฉพาะที่ไม่มีที่อยู่ของบรรทัดใช้รูปแบบเท่านั้นตัวอย่างเช่น1s วิธีจับคู่และพิมพ์บรรทัด?

19
มีเครื่องมือบรรทัดคำสั่งที่แข็งแกร่งสำหรับการประมวลผลไฟล์ csv หรือไม่?
ฉันทำงานกับไฟล์ CSV และบางครั้งจำเป็นต้องตรวจสอบเนื้อหาของแถวหรือคอลัมน์อย่างรวดเร็วจากบรรทัดคำสั่ง ในหลายกรณีcut, head, tailและเพื่อน ๆ จะทำผลงานได้; อย่างไรก็ตามการตัดไม่สามารถจัดการกับสถานการณ์เช่น "this, is the first entry", this is the second, 34.5 ที่นี่เครื่องหมายจุลภาคแรกเป็นส่วนหนึ่งของสนามแรก แต่cut -d, -f1ไม่เห็นด้วย ก่อนที่ฉันจะเขียนวิธีแก้ปัญหาด้วยตัวเองฉันก็สงสัยว่าถ้าใครรู้จักเครื่องมือที่ดีที่มีอยู่แล้วสำหรับงานนี้ อย่างน้อยที่สุดก็ต้องสามารถจัดการกับตัวอย่างด้านบนและส่งคืนคอลัมน์จากไฟล์ที่จัดรูปแบบ CSV คุณสมบัติที่ต้องการอื่น ๆ รวมถึงความสามารถในการเลือกคอลัมน์ตามชื่อคอลัมน์ที่กำหนดในแถวแรกการสนับสนุนรูปแบบการอ้างอิงอื่น ๆ และการสนับสนุนสำหรับไฟล์ที่คั่นด้วยแท็บ หากคุณไม่รู้จักเครื่องมือดังกล่าว แต่มีข้อเสนอแนะเกี่ยวกับการใช้โปรแกรมดังกล่าวใน Bash, Perl หรือ Python หรือภาษาสคริปต์ทั่วไปอื่น ๆ ฉันจะไม่สนใจคำแนะนำดังกล่าว

3
ฉันจะทดสอบการเข้ารหัสไฟล์ข้อความได้อย่างไร ... มันถูกต้องและมันคืออะไร?
ฉันมี.htmไฟล์หลายไฟล์ที่เปิดในGeditโดยไม่มีการเตือน / ข้อผิดพลาดใด ๆ แต่เมื่อฉันเปิดไฟล์เดียวกันนี้Jeditมันจะเตือนฉันเกี่ยวกับการเข้ารหัส UTF-8 ที่ไม่ถูกต้อง ... แท็ก meta ของ HTML ระบุว่า "charset = ISO-8859-1" Jedit อนุญาตให้ใช้รายการการเข้ารหัสทางเลือกและรายการการเข้ารหัสเครื่องตรวจจับอัตโนมัติ (ปัจจุบันคือ "BOM XML-PI") ดังนั้นปัญหาในทันทีของฉันจึงได้รับการแก้ไข แต่นี่ทำให้ฉันคิดถึง: จะเกิดอะไรขึ้นถ้าข้อมูลเมตาไม่อยู่ที่นั่น? เมื่อข้อมูลการเข้ารหัสไม่สามารถใช้งานได้มีโปรแกรม CLI ที่สามารถ "เดาได้ดีที่สุด" ซึ่งการเข้ารหัสอาจใช้หรือไม่ และถึงแม้ว่ามันจะเป็นปัญหาที่แตกต่างออกไปเล็กน้อย มีโปรแกรม CLI ซึ่งทดสอบความถูกต้องของการเข้ารหัสที่รู้จักหรือไม่

8
วิธีแปลง TXT เป็น PDF
ฉันต้องการแปลงไฟล์ไปยัง.txt .pdfฉันใช้สิ่งนี้: ls | while read ONELINE; do convert -density 400 "$ONELINE" "$(echo "$ONELINE" | sed 's/.txt/.pdf/g')"; done แต่นี่จะทำให้เกิด "ข้อผิดพลาด" หนึ่งรายการ - หากมีบรรทัดยาวมากในไฟล์ข้อความก็จะไม่ถูกพันทับ ป้อนข้อความ เอาท์พุท PDF - นอกจากนี้จะเป็นการดีถ้า PDF ที่ออกมานั้นมีข้อความแทนที่จะเป็นรูปภาพของข้อความ ฉันมีไฟล์ TXT จำนวนมาก ดังนั้นไม่ต้องการทำด้วยมือ ฉันต้องการโซลูชันอัตโนมัติเช่นเดียวกับที่กล่าวไว้ข้างต้น

5
ลบบรรทัดสุดท้ายออกจากไฟล์
ฉันใช้sed เพื่อลบบรรทัดที่มีตำแหน่งเฉพาะอย่างรวดเร็วเช่น sed '1d' sed '5d' แต่ถ้าฉันต้องการลบบรรทัดสุดท้ายของไฟล์และฉันไม่รู้จำนวนเส้น (ฉันรู้ว่าฉันสามารถใช้มันwcและลูกเล่นอื่น ๆ ได้) ขณะนี้ใช้วิธีแก้ไขด้วยheadและtailรวมกับwcสิ่งที่ต้องทำ บิดเร็ว ๆ ที่นี่?

5
แทนที่ตัวแปรสภาพแวดล้อมในไฟล์ด้วยค่าจริงหรือไม่?
มีวิธีง่าย ๆ ในการทดแทน / ประเมินตัวแปรสภาพแวดล้อมในไฟล์หรือไม่? อย่างสมมติว่าฉันมีไฟล์config.xmlที่มี: <property> <name>instanceId</name> <value>$INSTANCE_ID</value> </property> <property> <name>rootPath</name> <value>/services/$SERVICE_NAME</value> </property> ... ฯลฯ ฉันต้องการแทนที่$INSTANCE_IDในไฟล์ด้วยค่าของINSTANCE_IDตัวแปรสภาพแวดล้อม$SERVICE_NAMEด้วยค่าของSERVICE_NAMEenv var ฉันไม่ทราบว่าจะต้องใช้ vars รุ่นใด (หรือมากกว่านั้นฉันไม่ต้องการอัปเดตสคริปต์หากมีคนเพิ่มตัวแปรสภาพแวดล้อมใหม่ลงในไฟล์ปรับแต่ง) ขอบคุณ!

4
ทำอย่างไรถึงจะได้ผลลัพธ์ที่ไม่เหมือนใครโดยไม่ต้องเรียงลำดับข้อมูล?
$ cat data.txt aaaaaa aaaaaa cccccc aaaaaa aaaaaa bbbbbb $ cat data.txt | uniq aaaaaa cccccc aaaaaa bbbbbb $ cat data.txt | sort | uniq aaaaaa bbbbbb cccccc $ ผลที่ผมต้องการก็คือการแสดงทุกบรรทัดจากไฟล์ต้นฉบับลบที่ซ้ำกันทั้งหมด (ไม่เพียง แต่คนที่ติดต่อกัน) ขณะที่ยังคงคำสั่งเดิมของงบในแฟ้ม ในตัวอย่างนี้ผลลัพธ์ที่ฉันกำลังมองหาคือ aaaaaa cccccc bbbbbb ฉันจะใช้uniqงานการดำเนินการทั่วไปได้อย่างไร?


6
คำสั่งไปยังแท็บเค้าโครงรายการแยกกันอย่าง
บางครั้งฉันได้รับเป็นรายการคั่นแท็บป้อนข้อมูลซึ่งไม่ได้จัดแนวค่อนข้างเช่น var1 var2 var3 var_with_long_name_which_ruins_alignment var2 var3 มีวิธีง่าย ๆ ในการเรนเดอร์แบบเรียงซ้อนหรือไม่? var1 var2 var3 var_with_long_name_which_ruins_alignment var2 var3

5
แทนที่บรรทัดใหม่ทั้งหมดเป็นช่องว่างยกเว้นบรรทัดสุดท้าย
ฉันจะแทนที่บรรทัดใหม่ทั้งหมดด้วยช่องว่างได้อย่างไรยกเว้นขึ้นบรรทัดใหม่ล่าสุด ฉันสามารถแทนที่บรรทัดใหม่ทั้งหมดเป็นที่ว่างโดยใช้trแต่ฉันจะทำอย่างไรกับข้อยกเว้นบางอย่าง?

4
grep จากจุดสิ้นสุดของไฟล์ไปยังจุดเริ่มต้น
ฉันมีไฟล์ที่มีเส้นประมาณ 30.000.000 บรรทัด (การบัญชี Radius) และฉันต้องการค้นหาคู่สุดท้ายของรูปแบบที่กำหนด คำสั่ง: tac accounting.log | grep $pattern ให้สิ่งที่ฉันต้องการ แต่ช้าเกินไปเพราะระบบปฏิบัติการจะต้องอ่านไฟล์ทั้งหมดก่อนแล้วจึงส่งไปที่ไพพ์ ดังนั้นฉันต้องการสิ่งที่รวดเร็วที่สามารถอ่านไฟล์จากบรรทัดสุดท้ายถึงบรรทัดแรก

4
วิธีที่ง่ายที่สุดในการคอมเมนต์ / uncomment บางบรรทัดโดยใช้บรรทัดคำสั่ง
มีวิธีการแสดงความคิดเห็น / uncomment สคริปต์ shell / config / ruby ​​โดยใช้บรรทัดคำสั่งหรือไม่ ตัวอย่างเช่น: $ comment 14-18 bla.conf $ uncomment 14-18 bla.conf นี้จะเพิ่มหรือลบ#ป้ายbla.confบนเส้นไป14 18ปกติฉันจะใช้sedแต่ฉันต้องรู้เนื้อหาของบรรทัดเหล่านั้นแล้วทำการค้นหาแทนที่และนั่นจะให้ผลลัพธ์ที่ผิดเมื่อมีเข็มมากกว่าหนึ่งเข็ม (และเราต้องการแทนที่ N-th เท่านั้น หนึ่ง).

1
วิธีการทำให้ tr ตระหนักถึงอักขระที่ไม่ใช่ ascii (unicode)
ฉันกำลังพยายามลบอักขระบางตัวออกจากไฟล์ (UTF-8) ฉันใช้trเพื่อจุดประสงค์นี้: tr -cs '[[:alpha:][:space:]]' ' ' <testdata.dat ไฟล์มีอักขระต่างประเทศบางตัว (เช่น "Латвийская" หรือ "àé") trดูเหมือนจะไม่เข้าใจพวกเขามันถือว่าพวกเขาเป็นที่ไม่ใช่อัลฟาและลบออกด้วย ฉันพยายามเปลี่ยนการตั้งค่าภาษาของฉัน: LC_CTYPE=C LC_COLLATE=C tr -cs '[[:alpha:][:space:]]' ' ' <testdata.dat LC_CTYPE=ru_RU.UTF-8 LC_COLLATE=C tr -cs '[[:alpha:][:space:]]' ' ' <testdata.dat LC_CTYPE=ru_RU.UTF-8 LC_COLLATE=ru_RU.UTF-8 tr -cs '[[:alpha:][:space:]]' ' ' <testdata.dat น่าเสียดายที่ไม่มีสิ่งเหล่านี้ทำงาน ฉันจะทำให้trเข้าใจ Unicode ได้อย่างไร

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