Score:1

อ่านจากไฟล์ข้อความและรับแถวที่เกี่ยวข้องจากไฟล์ csv

ธง us

ฉันมีไฟล์ข้อความชื่อ train_ids.txtและไฟล์ csv ชื่อ ชุดข้อมูล.csv.

ไฟล์ข้อความมีรหัส โดยวิธีนี้:

จาน_1.png
จาน_5.png

ไฟล์ csv อินพุต มีคอลัมน์และแถวจำนวนมาก แต่ คอลัมน์แรกประกอบด้วยรหัส. คอลัมน์แรกมีดังนี้:

จาน_1 
จาน_2 
จาน_3 
จาน_4 
จาน_5 

ฉันต้องการเขียนสคริปต์ทุบตีเพื่ออ่านรหัสจากไฟล์ข้อความ และรับแถวที่เกี่ยวข้องซึ่งมีรหัสเหล่านี้ จากนั้นใส่ทั้งแถวลงในไฟล์ csv ใหม่เพื่อเป็นเอาต์พุต

ดังนั้นไฟล์ csv ที่ส่งออกควรเป็นดังนี้:

จาน_1 | อะไรก็ตาม_1
จาน_5 | อะไรก็ได้_5

หมายเหตุ:

  • ในไฟล์ csv เอาต์พุต ฉันหมายถึง อะไรก็ตาม ทั้งแถว
  • เราต้องถอด .png จากไฟล์ข้อความ ids เพื่อให้สามารถค้นหาได้
  • ไฟล์ข้อความทั้งหมดมีรหัสตามที่กล่าวไว้เท่านั้น ไม่มีบรรทัดอื่น
  • ไฟล์ข้อความ ids ถูกจัดเรียง แต่ไฟล์ csv ไม่ได้เรียงลำดับ
  • รหัสในไฟล์ข้อความอยู่ในไฟล์ csv อย่างแน่นอน ดังนั้นเราไม่จำเป็นต้องข้ามหรือรายงานสิ่งใด

ฉันไม่รู้จะทำอย่างไร คุณช่วยฉันได้ไหม

hr flag
... คล้ายกับ [ค้นหาคู่ในไฟล์ csv](https://askubuntu.com/a/1213425/178692)
terdon avatar
cn flag
โปรด [แก้ไข] คำถามของคุณและให้รายละเอียดเพิ่มเติมแก่เรา 'อะไร' คืออะไร? o ทั้งแถวของไฟล์ csv? เราจำเป็นต้องลบ `.png` ออกจาก "id" หรือไม่ สามารถมีส่วนขยายอื่น ๆ ได้หรือไม่? มีหลาย `.` ในชื่อ (เช่น `foo.png.bar`) ได้หรือไม่ ไฟล์จะถูกจัดเรียงเพื่อให้บรรทัด N ในไฟล์หนึ่งตรงกับบรรทัด N ในไฟล์อื่นหรือไม่ ควรข้ามหรือรายงานบรรทัดที่ไม่มีรายการที่ตรงกันหรือไม่
Abanoub Asaad avatar
us flag
@terdon เพิ่งอัปเดตคำถามพร้อมบันทึกเพิ่มเติม
terdon avatar
cn flag
ขอบคุณ แต่โปรดให้ตัวอย่างที่เราสามารถใช้ทดสอบวิธีแก้ปัญหาของเรา คุณได้ให้ไฟล์ ID ที่มีเพียงสองบรรทัด จากนั้นให้ไฟล์ csv ที่มีเพียงหนึ่งฟิลด์ ดังนั้นเราจึงไม่สามารถสร้างผลลัพธ์ที่คุณต้องการตามอินพุตของคุณ นอกจากนี้ คุณกำลังแสดงไฟล์ _unsorted_ ids และไฟล์ _sorted_ "csv" แต่จากนั้นบอกว่ามันตรงกันข้าม สุดท้าย อะไรกำหนดเขตข้อมูลใน csv ของคุณ มันเป็นเครื่องหมายจุลภาค? ช่องว่าง? แท็บ? เขตข้อมูลที่ยกมา? ทั้งหมดนี้มีความสำคัญเพื่อให้คุณได้สิ่งที่สามารถนำไปใช้ได้จริง
Score:1
ธง cn

คุณไม่จำเป็นต้องมีสคริปต์สำหรับสิ่งนี้ เพียงแค่ใช้ แปะ. คุณไม่ได้แสดงให้เราเห็นว่าข้อมูลจริงของคุณเป็นอย่างไร ดังนั้นฉันเดาว่าคุณมีสิ่งนี้:

$ cat train_ids.txt 
จาน_1.png
จาน_2.png
จาน_3.png
จาน_4.png
จาน_5.png

และ

$ cat dataset.csv
dish_2 อะไรก็ได้ 2
dish_5, อะไรก็ได้ 5
dish_4, อะไรก็ได้ 4
dish_3 อะไรก็ได้ 3
dish_1 อะไรก็ได้ 1

ถ้าใช่ คุณจะได้ผลลัพธ์ที่คุณต้องการด้วย:

$ เข้าร่วม -t, <(sed 's/\.png$//' train_ids.txt) <(sort dataset.csv)
dish_1 อะไรก็ได้ 1
dish_2 อะไรก็ได้ 2
dish_3 อะไรก็ได้ 3
dish_4, อะไรก็ได้ 4
dish_5, อะไรก็ได้ 5

และเพื่อให้ได้สิ่งนี้เป็นไฟล์ที่คั่นด้วยไพพ์แทนที่จะเป็น csv (ไฟล์ที่คั่นด้วยเครื่องหมายจุลภาค) คุณสามารถทำได้:

$ เข้าร่วม -t, <(sed 's/\.png$//' train_ids.txt) <(sort dataset.csv) | sed 's/, / | /'
จาน_1 | อะไรก็ตาม1
จาน_2 | อะไรก็ตาม2
จาน_3 | อะไรก็ตาม3
จาน_4 | อะไรก็ได้4
จาน_5 | อะไรก็ตาม5

โพสต์คำตอบ

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