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

คำถามเกี่ยวกับการแก้ไขสร้างหรือแยกไฟล์ข้อความธรรมดา นี่เป็นแท็กที่กว้างมากหากคำถามของคุณเกี่ยวกับการใช้เครื่องมือเฉพาะโปรดติดแท็กด้วยชื่อของเครื่องมือเช่นกัน (เช่น sed, awk, perl และอื่น ๆ )

6
จะแทนที่ข้อความแบบสุ่มจากไฟล์ได้อย่างไร
ฉันจะสุ่มแทนที่สตริงเฉพาะในไฟล์ข้อความเดียวด้วยสตริงจากไฟล์อื่นได้อย่างไร ตัวอย่างเช่น: file1.txt(file has more than 200 lines): moonwalker@address.com hansolo@address.com anakinskywalker@address.com obiwankenobi@address.com darthvader@address.com file2.txt(file has 10-20 lines): @adress1.com @adress2.com @adress3.com @adress4.com @adress5.com output.txt: moonwalker@address4.com hansolo@address1.com anakinskywalker@address5.com obiwankenobi@address2.com darthvader@address3.com

4
ค้นหา ID ในไฟล์เดียวที่ไม่ได้อยู่ในอีกไฟล์
ฉันมีสองไฟล์: abc.txt abcd xyz pqrs mno.txt zzon mkno abcd ฉันต้องการตรวจสอบว่า "abcd" มีอยู่ในไฟล์mno.txtหรือไม่ มันไม่จำเป็นว่าถ้า "ABCD ให้" เป็นครั้งแรกในabc.txtก็จะยังเป็นครั้งแรกในmno.txt มี ID ดังกล่าวหลายพันรายการในทั้งสองไฟล์ ฉันต้องการที่จะตรวจสอบวิธีการหลาย id ของไม่ได้อยู่ในmno.txtที่อยู่ในabc.txt ฉันจะทำสิ่งนี้ได้อย่างไร

1
วิธี grep สตริงเดียวกันโดยการเปรียบเทียบสองไฟล์
ฉันมีไฟล์ A และไฟล์ B สองไฟล์ ไฟล์ A มีข้อมูลทั้งหมดในขณะที่ไฟล์ B มีรหัสข้อมูลที่ไม่ซ้ำกัน สิ่งที่ฉันต้องการทำคือการเปรียบเทียบทั้งไฟล์และ grep the รหัสข้อมูลจากไฟล์ A ไฟล์ A: acb:A1S_1863 ncbi-proteinid:ABO12290 acb:A1S_1864 ncbi-proteinid:ABO12291 acb:A1S_1865 ncbi-proteinid:ABO12292 acb:A1S_0105 ncbi-proteinid:ABO10592 acb:A1S_0106 ncbi-proteinid:ABO10593 ไฟล์ B: A1S_1865 A1S_1774 A1S_1116 A1S_0106 A1S_2677 ผลลัพธ์ที่ต้องการ: acb:A1S_1865 ncbi-proteinid:ABO12292 acb:A1S_0106 ncbi-proteinid:ABO10593

2
ฉันจะแทนที่หลายบรรทัดด้วยคำเดียวในไฟล์ (แทนที่แทนที่) ได้อย่างไร
เนื้อหาของfilenameไฟล์ของฉันเป็นดังต่อไปนี้ (ตัวอย่าง): My block of line starts from here START First line second line third line END and end to here for example. ฉันต้องการที่จะแทนที่บล็อกเส้นระหว่างSTARTและมีเพียงคำเดียวเช่นกับEND SINGLEWORDชอบด้านล่าง: My block of line starts from here SINGLEWORD and end to here for example. ฉันสามารถหาบล็อกของบรรทัดด้วยการใช้คำสั่งนี้: grep -Pzo "START(.|\n)*END" filename และผลลัพธ์ของการรันคำสั่งด้านบนจะเป็นดังนี้: START First line second line …

3
การแทนที่จุด (.) เป็น sed
ดังนั้นคำถามที่แท้จริงคือ - ไม่มีใครมีความคิดวิธีการลบM-BM-ตัวละครพิเศษโดยไม่เสี่ยงต่อการสูญเสียตัวละครอื่น ๆ ? ฉันมีข้อความ: " . . ." นั่นคือ space dot space dot space dot ฉันพยายามแทนที่สตริงนี้ทั้งหมดในไฟล์ข้อความเป็น "..." นั่นคือ dot dot dot ฉันพยายามจะทำกับ sed: sed -r 's:\s\.\s\.\s\.:...:g' -i sed-dots น่าเสียดายที่มันไม่เปลี่ยนไฟล์อินพุตแม้แต่นิดเดียว ไฟล์: https://www.dropbox.com/s/46zmiruy3ln85a1/sed-dots เมื่อฉันพยายามที่จะแทนที่สตริงเดียวกันใน text editor (ฉันใช้ geany) จะพบและแทนที่อย่างถูกต้อง เหตุผลเดียวที่ฉันคิดได้ก็คือพื้นที่บางส่วน (หรือทั้งหมด) ไม่ใช่ช่องว่าง แต่เป็นอักขระพิเศษ ใครบ้างมีความคิดวิธีการค้นหาและแทนที่สตริงนั้นด้วย sed (หรือเครื่องมือบรรทัดคำสั่งอื่น ๆ )? โปรดทดสอบความคิดของคุณในไฟล์ของฉันเนื่องจากปัญหาไม่ชัดเจนเท่าที่ควร - …

10
ฉันจะสร้างจำนวนรวมสะสมในไฟล์ข้อความได้อย่างไร
ฉันมีไฟล์ข้อความที่มี 2 ล้านบรรทัด แต่ละบรรทัดมีจำนวนเต็มบวก ฉันกำลังพยายามสร้างตารางความถี่ชนิดของสิ่ง ไฟล์อินพุต: 3 4 5 8 ผลลัพธ์ควรเป็น: 3 7 12 20 ฉันจะทำสิ่งนี้ได้อย่างไร

5
รับองค์ประกอบหนึ่งของสตริงพา ธ โดยใช้ bash
ฉันมีไฟล์ ASCII ที่มีไฟล์พา ธ ที่ฉันอ่านโดยใช้: while read p; do echo $p; done < filelist.txt ไฟล์มี filepaths ที่มีรูปแบบต่อไปนี้: ./first/example1/path ./second/example1/path ./third/example2/path ฉันจะรับส่วนเฉพาะของสตริงพา ธ (จาก/ไปยัง/) ได้เช่นฉันต้องได้รับผลลัพธ์ที่พิมพ์: first second third และนอกจากนี้ยังมี example1 example1 example2 ฉันแน่ใจว่ามีวิธีการทำเช่นนี้โดยใช้การแสดงออกปกติและsedแต่ฉันไม่คุ้นเคยกับมัน

6
สร้างไดเรกทอรีที่มีชื่อจากไฟล์ txt ซึ่งมีอักขระ '/'
ฉันมีไฟล์. txt ที่มีข้อความเช่นนี้ A1/B1/C1 A2/B2/C2 A3/B3/C3 ฉันต้องการสคริปต์ที่อ่านไฟล์. txt สำหรับแต่ละบรรทัดจากนั้นสร้างไดเรกทอรีตามคำแรก (A1, A2, A3) ฉันได้สร้างสคริปต์เช่นนี้: file="test.txt" while IFS='' read -r line do name="line" mkdir -p $line done <"$file" ในขณะที่ฉันเรียกใช้มันสร้างไดเรกทอรี A1 จากนั้นสร้างไดเรกทอรีย่อย B1 และ C1 เกิดขึ้นเหมือนกันสำหรับอีกบรรทัด (A2 * และ A3 *) ฉันควรทำอย่างไรเพื่อสร้างไดเรกทอรี A1, A2, A3 เท่านั้น ฉันไม่ต้องการตั้งชื่อเช่น A1 / B1 / C1 ด้วยอักขระ …

2
จำกัด เอาต์พุต grep เป็นบรรทัดสั้น ๆ
ฉันมักใช้ grep เพื่อค้นหาไฟล์ที่มีรายการบางรายการเช่นนี้: grep -R 'MyClassName' สิ่งที่ดีคือมันคืนไฟล์เนื้อหาและทำเครื่องหมายสตริงที่พบเป็นสีแดง สิ่งที่ไม่ดีคือฉันยังมีไฟล์ขนาดใหญ่ที่เขียนข้อความทั้งหมดในบรรทัดเดียวขนาดใหญ่ ตอนนี้ grep เอาต์พุตมากเกินไปเมื่อค้นหาข้อความภายในไฟล์ขนาดใหญ่เหล่านั้น มีวิธี จำกัด ผลลัพธ์ให้เช่น 5 คำไปทางซ้ายและไปทางขวาหรือไม่ หรืออาจ จำกัด ผลลัพธ์ให้เหลือ 30 ตัวอักษรไปทางซ้ายและไปทางขวา?

4
วิธีดึงข้อมูลหลายบิตที่ปรากฏบนบรรทัดต่าง ๆ ภายในไฟล์ข้อความเดียวกัน
ฉันพยายามที่จะแยก ID ลำดับและหมายเลขคลัสเตอร์ที่เกิดขึ้นในบรรทัดที่แตกต่างกันภายในไฟล์ข้อความเดียวกัน อินพุตดูเหมือนว่า >Cluster 72 0 319aa, >O311_01007... * >Cluster 73 0 318aa, >1494_00753... * 1 318aa, >1621_00002... at 99.69% 2 318aa, >1622_00575... at 99.37% 3 318aa, >1633_00422... at 99.37% 4 318aa, >O136_00307... at 99.69% >Cluster 74 0 318aa, >O139_01028... * 1 318aa, >O142_00961... at 99.69% >Cluster 75 0 …

1
ฉันจะตรวจสอบระดับสัญญาณไร้สายและความถี่และบันทึกในรูปแบบ csv ได้อย่างไร
ฉันต้องการรันคำสั่งiw dev wlan0 linkอย่างต่อเนื่องทุกวินาทีและบันทึกผลลัพธ์ลงในcsvไฟล์ ฉันกำลังใช้คำสั่งต่อไปนี้: while sleep 1; do iw dev wlan0 link | grep 'freq:\|signal' | awk '{printf "%s ", $2, $3}' >> log.csv done แต่เอาต์พุตจะถูกบันทึกlog.csvด้วยวิธีต่อไปนี้: 2412 -41 2412 -42 2412 -45 2412 -43 ฉันต้องการให้บันทึกผลลัพธ์ในวิธีที่ทั้งสองเขตข้อมูลคั่นด้วยเครื่องหมายจุลภาค (ดังนั้นพวกเขาจะปรากฏในคอลัมน์แยกต่างหากในโปรแกรมแก้ไขเช่น MS Excel) และแต่ละคนทำงานในบรรทัดใหม่ log.csvจะมีลักษณะเช่นนี้ (คุณสามารถละเว้นฉลากพวกเขาเป็นเพียงคำอธิบาย): Signal Frequency -41 2412 -42 2412 -45 2412 …


5
จะตัดผลลัพธ์ของ speedtest-cli ให้ส่งออกเฉพาะความเร็วในการดาวน์โหลดได้อย่างไร
ผมอยากจะเป็นระยะแสดงผลความเร็วในการดาวน์โหลดของฉัน Speedtest ในตัวบ่งชี้ sysmonitor speedtest-cli มีเอาต์พุตที่ถูกตัดออกบ้างหากคุณรัน $ speedtest-cli --simple Ping: 50.808 ms Download: 10.87 Mbit/s Upload: 4.47 Mbit/s มีวิธีใดในการตัดแต่งเอาต์พุตให้มากขึ้นลงไปที่ตัวเลขความเร็วในการดาวน์โหลด?

2
ดูไฟล์และพิมพ์ข้อความจากบรรทัดที่ระบุ
ฉันมีไฟล์ที่มีข้อมูลที่ฉันบันทึก ตอนนี้ฉันต้องการพิมพ์ผลลัพธ์ของฉันเป็นไฟล์ใหม่ ตัวอย่างเช่นลองทำตัวอย่างนี้randomlog.log: Link encap:Ethernet HWaddr 08:00:00:00:00:67 inet addr:10.10.10.10 Bcast:10.10.10.10 Mask:255.255.255.0 inet6 addr: fe80::casf:sdfg:23ra:dg12/64 Scope:Link ฉันจะใช้ข้อมูลจากอักขระที่ 12 ถึง 20 ของบรรทัดแรกเท่านั้นและจากนั้นอักขระที่ 4 ถึง 8 ของบรรทัดที่ 3 ได้อย่างไร ผลลัพธ์จะมีลักษณะดังนี้: Ethernet t6 ad เป็นไปได้ไหม ฉันต้องการตั้งค่าเส้นและจากตำแหน่งเป็นตำแหน่งนี้

7
วิธีใช้ sort บนคำสั่ง awk print?
ฉันมีสองคำสั่งในสคริปต์ awk ที่ฉันเขียน: print "Here are some players and their numbers, sorted by last name" if(sum[x] > 500) {print x, $2} ผลลัพธ์ใด: Here are some players and their numbers, sorted by last name Lebron James 23 Kevin Durant 35 Kobe Bryant 24 Blake Griffin 32 Dikembe Mutumbo 55 ฉันจะใช้sortคำสั่งในสคริปต์ awk …

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