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

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



4
bash: การใช้โพรซีเดอร์ find-select ที่ปลอดภัยแบบ whitespace ปลอดภัย
รับชื่อไฟล์เหล่านี้: $ ls -1 file file name otherfile bash ตัวเองทำดีกับช่องว่างที่ฝังตัว: $ for file in *; do echo "$file"; done file file name otherfile $ select file in *; do echo "$file"; done 1) file 2) file name 3) otherfile #? อย่างไรก็ตามบางครั้งฉันอาจไม่ต้องการทำงานกับไฟล์ทุกไฟล์หรือแม้กระทั่งในที่เข้มงวด$PWDซึ่งเป็นที่findมาซึ่งยังจัดการกับช่องว่างในนาม: $ find -type f -name file\* ./file ./file name …

8
จะเรียงลำดับคอลัมน์ตามบรรทัดแรกได้อย่างไร
ฉันต้องการเรียงลำดับคอลัมน์ของชุดข้อมูลที่มีขนาดใหญ่มาก (1,000 บรรทัดและ 700,000 คอลัมน์) ตัวอย่างเช่นคอลัมน์ของฉันถูกจัดเรียงแบบสุ่มเช่น: col1 col4 col3 col2 และฉันต้องเรียงลำดับนั้น ฉันลองใช้คำสั่งแล้ว แต่ไม่ประสบความสำเร็จ ตัวอย่าง: ID M2 M5 M8 M1 M3 M9 .....M7000000 Animal1 1 0 2 1 0 2 .....1 Animal2 0 1 2 0 1 1 .....0 Animal3 2 1 0 1 2 1 .....0 . . . . …

10
สคริปต์ที่ลบช่องว่างพิเศษระหว่างตัวอักษรในข้อความ
ฉันมีเอกสารข้อความที่มีข้อความมากมายซึ่งเพิ่มพื้นที่พิเศษหลังจากตัวอักษรทุกตัว! ตัวอย่าง: T h e b o o k a l s o h a s a n a n a l y t i c a l p u r p o s e w h i c h i s m o r e i m p o …

3
การรวมสองไฟล์ทีละหนึ่งคอลัมน์
ฉันมีไฟล์ขนาดใหญ่ 2 ไฟล์ (3000 คอลัมน์, 15,000 แถว) ของรูปแบบต่อไปนี้ file1 (คั่นด้วยแท็บ): 1/0 0/0 0/0 0/0 1/1 0/0 1/1 0/1 0/0 file2 (คั่นด้วยแท็บ): 3 5 2 1 7 10 3 4 3 ฉันต้องการรวมค่าจากคอลัมน์แรกของแต่ละไฟล์กับตัวคั่น ":" จากนั้นไปยังคอลัมน์ที่สองสามและอื่น ๆ ผลลัพธ์ที่ต้องการ (คั่นด้วยแท็บ): 1/0:3 0/0:5 0/0:2 0/0:1 1/1:7 0/0:10 1/1:3 0/1:4 0/0:3 ประสิทธิภาพไม่สำคัญดังนั้นภาษาใดก็ได้ ฉันขอโทษถ้าสิ่งนี้ถูกถามมาก่อน

7
ฉันจะลบอักขระทั้งหมดที่อยู่ภายใต้ / * … * / รวมถึง / * & * / ได้อย่างไร
ฉันลอง sed และ awk แต่มันไม่ทำงานเนื่องจากตัวอักษรเกี่ยวข้องกับ "/" ซึ่งมีอยู่แล้วในคำสั่งเป็นตัวคั่น โปรดแจ้งให้เราทราบว่าฉันจะทำสิ่งนี้ได้อย่างไร ด้านล่างเป็นตัวอย่างเราต้องการลบส่วนที่ถูกใส่ความคิดเห็น /*.....*/ /*This is to print the output data*/ proc print data=sashelp.cars; run; /*Creating dataset*/ data abc; set xyz; run;

4
แทรกข้อความที่หมายเลขบรรทัดเฉพาะ
ฉันกำลังทำงานกับสคริปต์ทุบตีที่จะแยกเนื้อหาของเอกสารข้อความขึ้นอยู่กับข้อมูลในบรรทัด หากเนื้อหาของไฟล์ต้นฉบับอยู่ในแนวของ 01 line 01 line 02 line 02 line ฉันจะแทรกลงในบรรทัดที่ 3 ของไฟล์นี้โดยใช้ bash เพื่อให้ได้ผลลัพธ์อย่างไร 01 line 01 line text to insert 02 line 02 line ฉันหวังว่าจะทำเช่นนี้โดยใช้ heredoc หรือสิ่งที่คล้ายกันในสคริปต์ของฉัน #!/bin/bash vim -e -s ./file.txt <<- HEREDOC :3 | startinsert | "text to insert\n" :update :quit HEREDOC ข้างต้นใช้งานไม่ได้ แต่มีคำแนะนำใดบ้างที่ฉันสามารถนำไปใช้กับสคริปต์ทุบตีนี้ได้

4
แสดงความคิดเห็นทุกบรรทัดจากบรรทัดที่ถูกคอมเม้นต์ล่าสุดไปยังบรรทัดด้วย 'foo'
พิจารณาไฟล์ข้อความusers.txt: #alice #bob charlie dotan eric ฉันต้องการที่จะแสดงความคิดเห็นทุกอย่างจาก (พิเศษ) เส้นแสดงความคิดเห็นสุดท้ายจนกว่า dotan(รวม) นี่คือผลลัพธ์ที่ได้: #alice #bob #charlie #dotan eric มีผู้แนะนำsedในการทำเช่นนี้หรือไม่ ฉันจะมีความสุขกับเครื่องมือใด ๆ ไม่ใช่แค่sedจริงๆ ขณะนี้ฉันได้รับหมายเลขบรรทัดของบรรทัดที่ถูกคอมเม้นต์ล่าสุดดังนี้: $ cat -n users.txt | grep '#' | tail -n1 2 #bob จากนั้นฉันเพิ่มหนึ่งและแสดงความคิดเห็นด้วยsed: $ sed -i'' '3,/dotan/ s/^/#/' users.txt ฉันรู้ว่าฉันสามารถฉลาดและใส่ทั้งหมดนี้เข้าด้วยกันbcเป็นหนึ่งซับ - น่าเกลียด แน่นอนต้องมีวิธีที่สะอาดกว่า?

7
ฉันจะระบุบรรทัดในไฟล์ในระยะเวลาหนึ่งได้อย่างไร
ฉันต้องการค้นหาบรรทัดในรหัสของฉันที่มีความยาวเกินกว่าที่กำหนด รหัสของฉันมีหลายไฟล์ วิธีที่ดีในการทำเช่นนี้คืออะไร? ฉันต้องการทราบไฟล์และหมายเลขบรรทัด เนื้อหาจะเป็นที่ต้องการ แต่ไม่จำเป็น จุดประสงค์ของการฝึกคือเพื่อหาวิธีแยกเส้น (อาจเป็นด้วยตนเอง)

6
การเรียงบล็อกของเส้น
ฉันมีไฟล์ที่มี 4n บรรทัด นี่คือข้อความที่ตัดตอนมาจากมันมี 8 บรรทัด 6115 8.88443 6116 6.61875 6118 16.5949 6117 19.4129 6116 6.619 6117 16.5979 6118 19.4111 6115 8.88433 สิ่งที่ฉันต้องการจะทำคือจัดเรียงบล็อกโดยแต่ละบล็อกประกอบด้วย 4 บรรทัดตามคอลัมน์แรก ผลลัพธ์ของข้อความที่ตัดตอนมาควรมีลักษณะที่แสดงด้านล่าง 6115 8.88443 6116 6.61875 6117 19.4129 6118 16.5949 6115 8.88433 6116 6.619 6117 16.5979 6118 19.4111

4
สุ่มไฟล์โดยมีข้อ จำกัด เพิ่มเติม
ฉันมีรายการเพลงขนาดใหญ่และในขณะที่ศิลปินบางคนมีหลายอัลบั้มคนอื่น ๆ มีเพียงเพลงเดียว ฉันต้องการเรียงลำดับเพลย์ลิสต์เพื่อให้ศิลปินคนเดียวกันไม่เล่นสองครั้งติดต่อกันหรือเพลงของเขาจะไม่จบลงส่วนใหญ่ในตอนต้นหรือตอนท้ายของเพลย์ลิสต์ ตัวอย่างเพลย์ลิสต์: $ cat /tmp/playlist.m3u Anna A. - Song 1 Anna A. - Song 2 I--Rock - Song 1 John B. - Song 1 John B. - Song 2 John B. - Song 3 John B. - Song 4 John B. - Song 5 Kyle C. - …

2
จัดแนวคอลัมน์ในไฟล์ ASCII
ฉันมีไฟล์ข้อความที่ดูเหมือนเขา: #c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 4599 995,274 2523,658 264,1417170 -33,6000 -0,3600 0,0202 0,0069 0,0227 10,1041 0,0169 0,2817 0,0239 6173 1552,290 1595,696 264,0603912 -33,4880 0,4374 0,0287 1,8123 0,0385 10,1289 0,0292 2,8445 0,0366 6456 1658,630 1529,292 264,0449377 -33,4800 0,0109 0,0234 1,0955 0,0296 10,5032 …

4
เชื่อมต่อบรรทัดตามคอลัมน์แรกโดย awk หรือ sed
ฉันจะใช้awkในสถานการณ์ต่อไปนี้ได้อย่างไร? ฉันต้องการเชื่อมโยงบรรทัดที่ขึ้นต้นด้วยคอลัมน์เดียวกัน เฉพาะคอลัมน์แรกจะถูกเก็บไว้หลังจากที่เข้าร่วม (ในกรณีนี้aaa, www, hhh) ไฟล์อาจคั่นด้วยช่องว่างหรือแท็บ อินพุตตัวอย่าง: aaa bbb ccc ddd NULL NULL NULL aaa NULL NULL NULL NULL NULL NULL aaa bbb ccc NULL NULL NULL NULL www yyy hhh NULL NULL NULL NULL hhh 111 333 yyy ooo hyy uuuioooy hhh 111 333 yyy ooo hyy NULL …

8
การสลับคอลัมน์ไม่ จำกัด จำนวน
ฉันมีไฟล์ที่มีคอลัมน์ ดูตัวอย่างด้านล่าง: a b c ... z 1 2 3 ... 26 ฉันต้องการสลับคอลัมน์ทั้งหมดที่ 1 กลายเป็นครั้งสุดท้ายที่สองกลายเป็นหนึ่งก่อนที่ผ่านมา ... ฯลฯ z y x ... a 26 25 24 ... 1 มีซับ ( awkหรือsed) ที่ทำสิ่งนี้หรือไม่? ฉันรู้ว่าสามารถใช้งานได้awkเมื่อมีคอลัมน์เพียงไม่กี่คอลัมน์ แต่ฉันต้องการทำสิ่งนี้กับไฟล์ที่มีคอลัมน์หลายพันคอลัมน์ tacทำสิ่งนี้ได้อย่างสมบูรณ์แบบสำหรับบรรทัด ฉันเดาว่าฉันกำลังมองหาคอลัมน์ที่เทียบเท่า rev ไม่ได้ผลสำหรับฉันเพราะมันสลับเนื้อหาในคอลัมน์ด้วย

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