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

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

3
ไม่สามารถใช้ `cut -c` (` --characters`) กับ UTF-8 ได้หรือไม่?
คำสั่งcutมีตัวเลือกในการทำงานกับตัวละครแทนของไบต์ที่มีตัวเลือก-c -bแต่ดูเหมือนจะไม่ทำงานในen_US.UTF-8สถานที่: ไบต์ที่สองให้อักขระ ASCII ตัวที่สอง (ซึ่งเข้ารหัสเหมือนกันใน UTF-8): $ printf 'ABC' | cut -b 2 B แต่ไม่ได้ให้อักขระที่สองในสามของอักขระที่ไม่ใช่ ASCII กรีกในโลแคล UTF-8: $ printf 'αβγ' | cut -b 2 � ว่าไม่เป็นไร - เป็นที่สองไบต์ ดังนั้นเรามองไปที่ตัวละครที่สองแทน: $ printf 'αβγ' | cut -c 2 � ดูหัก ด้วยการทดลองบางอย่างปรากฎว่าช่วง3-4แสดงตัวละครที่สอง: $ printf 'αβγ' | cut -c 3-4 β แต่นั่นก็เหมือนกับไบต์ …

3
ลบบรรทัดทั้งหมดในไฟล์ A ซึ่งมีสตริงในไฟล์ B
ฉันมีไฟล์ CSV users.csvพร้อมรายชื่อผู้ใช้ชื่อผู้ใช้และข้อมูลอื่น ๆ : username, userid, sidebar_side, sidebar_colour "John Lennon", 90123412, "left", "blue" "Paul McCartny", 30923833, "left", "black" "Ringo Starr", 77392318, "right", "blue" "George Harrison", 72349482, "left", "green" ในไฟล์อื่นtoremove.txtฉันมีรายการหมายเลขผู้ใช้: 30923833 77392318 มีวิธีที่ฉลาดและมีประสิทธิภาพในการลบแถวทั้งหมดออกจากusers.csvไฟล์ที่มีรหัสtoremove.txtหรือไม่ ฉันได้เขียนแอพ Python อย่างง่ายเพื่อแยกไฟล์สองไฟล์และเขียนลงในไฟล์ใหม่เฉพาะบรรทัดที่ไม่พบtoremove.txtแต่มันช้ามากเป็นพิเศษ บางทีเวทมนตร์sedหรือบางอย่างawkอาจช่วยได้ที่นี่ นี่คือผลลัพธ์ที่ต้องการโดยพิจารณาจากตัวอย่างด้านบน: username, userid, sidebar_side, sidebar_colour "John Lennon", 90123412, "left", "blue" "George Harrison", 72349482, …

8
วิธีการ grep หลายบรรทัด
คุณจะทำการ grep สำหรับข้อความที่ปรากฏในสองบรรทัดได้อย่างไร? ตัวอย่างเช่น: pbsnodes เป็นคำสั่งที่ฉันใช้ที่ส่งคืนการใช้ประโยชน์ของคลัสเตอร์ linux root$ pbsnodes node1 state = free procs = 2 bar = foobar node2 state = free procs = 4 bar = foobar node3 state = busy procs = 8 bar = foobar ฉันต้องการกำหนดจำนวนของ procs ที่ตรงกับโหนดที่อยู่ในสถานะ 'ว่าง' จนถึงตอนนี้ฉันสามารถระบุ "จำนวนของ procs" และ "โหนดในสถานะอิสระ" แต่ฉันต้องการรวมพวกมันเป็นคำสั่งเดียวที่แสดง procs …

7
รวมเอาคัตเอาท์ 2 แบบที่แตกต่างกันในคำสั่งเดียว?
ฉันมีไฟล์ดังต่อไปนี้: 1234 ABCD EFGH ฉันต้องการแปลงให้เป็นดังต่อไปนี้: 2341 BCDA FGHE ไฟล์จริงมี 4,000 คำดังนั้นฉันต้องการทำอย่างมีประสิทธิภาพ ฉันลองใช้คำสั่งcut -c 2-4,1 file.txtแต่มันสร้างเอาต์พุตที่แน่นอนเหมือนกับอินพุต ฉันคิดว่าฉันสามารถใช้คำสั่งที่แตกต่างกัน 3 คำ: cut -c 1 file.txt > temp1.txt cut -c 2-4 file.txt > temp2.txt // combine the two with paste or pr ... แต่ฉันต้องการคำสั่งเดียวเพราะฉันต้องเรียกใช้หลายครั้งด้วยการแก้ไขเล็กน้อยดังนั้นการเรียกใช้หนึ่งคำสั่งจะเกิดข้อผิดพลาดน้อยกว่าการรัน 3 คำสั่งในแต่ละครั้ง มีวิธีใดบ้างที่จะรวมคำแถลงที่ตัด 2 ฉบับเข้าด้วยกัน สิ่งที่ต้องการ: cut -c 1 file.txt …

2
อักขระขึ้นบรรทัดใหม่ที่หายไปจากการทดแทนคำสั่งของฉันอยู่ที่ไหน
รหัสต่อไปนี้อธิบายสถานการณ์ได้ดีที่สุด เหตุใดบรรทัดสุดท้ายจึงไม่แสดงเอาต์พุตอักขระขึ้นบรรทัดใหม่ เอาต์พุตของแต่ละบรรทัดจะแสดงในความคิดเห็น ฉันใช้GNU bash เวอร์ชัน 4.1.5 echo -n $'a\nb\n' | xxd -p # 610a620a x=$'a\nb\n' ; echo -n "$x" | xxd -p # 610a620a echo -ne "a\nb\n" | xxd -p # 610a620a x="$(echo -ne "a\nb\n")" ; echo -n "$x" | xxd -p # 610a62

6
ฉันจะแสดงผลลัพธ์ที่ n ของคำสั่ง ls ได้อย่างไร?
ฉันใช้คำสั่งนี้เพื่อแสดงผลลัพธ์แรกของไฟล์ในไดเรกทอรีของฉัน ls | head -n 1 คำถามง่ายๆของฉันคือฉันจะแก้ไขคำสั่งนี้เพื่อแสดงว่าผลลัพธ์ที่ n ได้อย่างไร ขอบคุณ!

5
วิธีใช้ bash script เพื่ออ่านเนื้อหาของไฟล์ไบนารี่
ฉันต้องการอ่านตัวอักษรและความยาวคงที่ของสตริง (สตริงไม่สิ้นสุดในไฟล์และความยาวของมันถูกกำหนดโดยตัวอักษรก่อนหน้า) ฉันจะทำสิ่งนี้ในสคริปต์ทุบตีได้อย่างไร วิธีกำหนดตัวแปรสตริงเพื่อให้ฉันสามารถทำการประมวลผลบางอย่างได้


7
วิธีการ grep -v และแยกบรรทัดถัดไปหลังการแข่งขัน?
จะกรอง 2 บรรทัดสำหรับแต่ละบรรทัดที่ตรงกับ grep regex ได้อย่างไร นี่คือการทดสอบขั้นต่ำของฉัน: SomeTestAAAA EndTest SomeTestABCD EndTest SomeTestDEFG EndTest SomeTestAABC EndTest SomeTestACDF EndTest และเห็นได้ชัดว่าฉันพยายามเช่นgrep -vA 1 SomeTestAAที่ไม่ทำงาน ผลลัพธ์ที่ต้องการคือ: SomeTestABCD EndTest SomeTestDEFG EndTest SomeTestACDF EndTest


6
ต่อท้ายข้อความด้วย echo โดยไม่มีบรรทัดใหม่
echo "abc" >>file.txtฉันต้องการที่จะเพิ่มข้อความลงในไฟล์เช่น แต่นี่เพิ่มabcหลังจากบรรทัดใหม่ ฉันจะเพิ่มabcท้ายไฟล์ด้วย echo โดยไม่มีบรรทัดใหม่ได้อย่างไร

5
ตัดคอลัมน์ 2 จากไฟล์ข้อความ
ไฟล์ข้อความของฉันไม่มีตัวคั่นเพื่อระบุช่องว่างตัวคั่นฉันจะตัดคอลัมน์ 2 ไปยังไฟล์เอาต์พุตได้อย่างไร 39 207 City and County of San Francisc REJECTED MAT = 0 78 412 Cases and materials on corporat REJECTED MAT = 0 82 431 The preparation of contracts an REJECTED MAT = 0 เอาท์พุทที่ฉันต้องการคือ 207 412 432

8
สลับลำดับขององค์ประกอบที่คั่นด้วยจุดในสตริง
ฉันมีสตริงการป้อนข้อมูลเช่น: arg1.arg2.arg3.arg4.arg5 ผลลัพธ์ที่ฉันต้องการคือ: arg5.arg4.arg3.arg2.arg1 มันไม่เสมอ 5 arg's อาจเป็น 2 ถึง 10 ฉันจะทำสิ่งนี้ในสคริปต์ทุบตีได้อย่างไร

5
ผสานสองไฟล์ทีละบรรทัดด้วยสัญลักษณ์สามท่อคั่น "|||"
|||ฉันมีสองไฟล์แบบคู่ขนานกับจำนวนเดียวกันของเส้นในสองภาษาและแผนการที่จะผสานเหล่านี้สายสองไฟล์โดยสอดคล้องกับตัวคั่น เช่นทั้งสองไฟล์มีดังนี้: ไฟล์ A: 1Mo 1,1 I love you. 1Mo 1,2 I like you. Hi 1,3 I am hungry. Hi 1,4 I am foolish. ไฟล์ B: 1Mo 1,1 Ich liebe dich. 1Mo 1,2 Ich mag dich. Hi 1,3 Ich habe Durst. Hi 1,4 Ich bin neu. ผลลัพธ์ที่คาดหวังเป็นดังนี้: 1Mo 1,1 I …

4
เรียงลำดับบรรทัดตามจำนวนคำต่อบรรทัด
รับอินพุต: hello: world foo bar baz bar: baz: bin boop bop fiz bang beep bap: bim bam bop boatkeeper: poughkeepsie ฉันต้องการเรียงลำดับเป็นคำส่วนใหญ่ที่ด้านบนสุดไปจนถึงท้ายที่สุดเช่น: baz: bin boop bop fiz bang beep hello: world foo bar baz bap: bim bam bop boatkeeper: poughkeepsie bar: ฉันจะทำสิ่งนี้กับsortเครื่องมืออื่น ๆ ได้อย่างไร?

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