Score:1

วิธีเลือกคอลัมน์เฉพาะในไฟล์สลับระหว่างบรรทัด

ธง af

ฉันมีไฟล์ข้อความที่มีบรรทัดข้อมูลลำดับโปรตีนและลำดับที่เกี่ยวข้อง

>4YDY_1|โซ่ A, C[auth B]|DARPIN 44C12V5|โครงสร้างสังเคราะห์ (32630)
MRGSHHHHHHGSDLGKKLLEAARAGQDDEVRILMANGADVNALDDSGYTPLHLAAEDGHLEIVEVLLKHGADVNAADRLGDTPLHLAAFVGHLEIVEVLLKAGADVNAVDLAGVTPLHVAAFYGHLEIVEVLLKGADVNAQDKFGKTPADIAADNGHEDIAEVLQKLN

สำหรับโซ่เหล่านี้มีลำดับ ฉันต้องการเรียกใช้ไฟล์ทุกบรรทัดและเก็บเฉพาะ ID และเชนแรก ลบหมายเลขเอนทิตีซึ่งอยู่หลัง ID (_1) ใส่เครื่องหมายจุลภาคระหว่าง ID และเชน e ลบสิ่งอื่น ๆ ใน เส้น. การดำเนินการนี้ควรทำหนึ่งบรรทัดใช่และหนึ่งไม่ใช่ นอกจากนี้ยังมีบางลำดับ (ตัวอักษรในบรรทัดที่สอง) ซึ่งมีตัวอักษรน้อยกว่า 50 ตัว ฉันต้องการลบทุกลำดับที่มีตัวอักษรน้อยกว่า 50 ตัวพร้อมกับ ID ซึ่งเป็นบรรทัดด้านบน

เพื่อให้ชัดเจน นี่คือผลลัพธ์ที่ฉันกำลังมองหาสำหรับทุกลำดับในไฟล์:

>4YDY:อ
MRGSHHHHHHGSDLGKKLLEAARAGQDDEVRILMANGADVNALDDSGYTPLHLAAEDGHLEIVEVLLKHGADVNAADRLGDTPLHLAAFVGHLEIVEVLLKAGADVNAVDLAGVTPLHVAAFYGHLEIVEVLLKGADVNAQDKFGKTPADIAADNGHEDIAEVLQKLN

ขอบคุณล่วงหน้า.

cn flag
Ray
สำหรับสิ่งที่คุณต้องการทำ คุณอาจต้องการหันไปใช้ Perl หรือ Python บางทีคนอื่นสามารถเสนอความช่วยเหลือเกี่ยวกับ `bash` ได้ แต่ฉันคิดว่ามันค่อนข้างยาก
Score:0
ธง jp

สิ่งนี้ได้รับการทดสอบและใช้งานได้กับตัวอย่างของคุณ

#!/bin/bash
# อ่านไฟล์ครั้งละสองบรรทัด
ในขณะที่อ่าน -r หนึ่ง; ทำ
   อ่าน -r สอง
   # หากบรรทัดที่สองมีความยาวตั้งแต่ห้าสิบอักขระขึ้นไป
   ถ้า ((${#two} >= 50)); แล้ว
     ไอเอฟเอส='|' อ่าน -ra f <<< "$ หนึ่ง"
     id="${f[0]}"
     # ลบขีดล่าง "_" และทุกอย่างที่ต่อจาก ID
     id=${id%_*}
     #คว้าโซ่เส้นแรก
     chain="${f[1]}"
     chain=$(ตัด -d ' ' -f2 <<<"$chain" | ตัด -d ',' -f1)
     one="$id:$chain" 
     # พิมพ์สองบรรทัดในรูปแบบที่ต้องการ
     printf '%s\n' "$1" "$2"
   ไฟ
เสร็จแล้ว < file.txt

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา