Score:0

อ่านไฟล์ด้วย LOOP ใน Bash Script หรือไม่

ธง ad

ฉันหวังว่าจะมีคนอธิบายให้ฉันฟังได้ว่าเกิดอะไรขึ้นในสถานการณ์นี้และจะแก้ไขได้อย่างไร

ฉันกำลังลองสิ่งง่ายๆ: เพื่ออ่านแต่ละแถวจากไฟล์ข้อความด้วยการวนซ้ำ.

นี่คือเนื้อหาไฟล์ข้อความที่ฉันกำลังดำเนินการ:

อ๊าาาาาาาาาาาาาา
บีบีบีบีบีบีบีบีบี
cccccccc ซีซีซี

หมายเหตุ: ไฟล์นี้เป็นไฟล์ง่ายๆ เพื่อทดสอบแนวคิด ไฟล์ข้อความหลักที่ฉันกำลังทำงานมีขนาดประมาณ 140MB โดยมีเค้าโครงตำแหน่งสำหรับแต่ละฟิลด์

นี่คือเนื้อหาสคริปต์ทุบตีของฉัน:

FILE=./text.txt

awk '{ พิมพ์ }' $FILE | ในขณะที่อ่าน ROW; ทำ
    เสียงสะท้อน $ROW
เสร็จแล้ว

ฉันได้รับแต่ละแถวจากไฟล์ แต่นี่คือผลลัพธ์:

อ๊าาาาาาาาาาาาาา
บีบีบีบีบีบีบีบีบี
cccccccc ซีซีซี

อย่างที่คุณเห็น ช่องว่างสีขาวส่วนเกินจะถูกลบออกจากเอาต์พุต

ฉันพยายามทดสอบสคริปต์นี้โดยใช้ อึดอัดแต่ฉันได้ลองแล้วกับ แมว และ แย่ และได้ผลเหมือนกันคือ

FILE=./text.txt

# แมว
แมว $FILE | ในขณะที่อ่าน ROW; ทำ
    เสียงสะท้อน $ROW
เสร็จแล้ว

##########

#สเตตัส
ในขณะที่อ่าน ROW; ทำ
    เสียงสะท้อน $ROW
เสร็จแล้ว < $FILE

ฉันยังลองใช้ สำหรับลูป:

สำหรับ ROW ใน $(awk '{ print }' $FILE); ทำ
    เสียงสะท้อน $ROW
    เสียงสะท้อน "---"
เสร็จแล้ว

แต่นี่คือผลลัพธ์ เนื้อหาแต่ละแถวถูกแบ่งด้วยช่องว่าง:

อ่าาา
---
อ่าาา
---
ก
---
อ่า
---
BB
---
บีบีบี
---
บีบีบี
---
ข
---
cccccccc
---
ค
---
ค
---
ค
---

ดังที่ฉันได้กล่าวไว้ก่อนหน้านี้ ไฟล์ข้อความหลักมีฟิลด์ระบุตำแหน่ง นั่นคือเหตุผลที่ฉันต้องการอักขระแถวทั้งหมด แม้ว่าจะเป็นช่องว่างเพิ่มเติมก็ตาม

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

hr flag
`echo $ROW` ควรเป็น `echo "$ROW"`- ดู [bash - เมื่อใดที่จำเป็นต้องใช้การเสนอราคาสองครั้ง] (https://unix.stackexchange.com/a/68748/65304) นอกจากนี้ คุณน่าจะต้องการ `IFS= read -r ROW` มากกว่าแค่ `read ROW`
jpbrain avatar
ca flag
นั่นคือคำตอบ ^^^^^^^^ (คนเหล็ก). อาร์กิวเมนต์แตกต่างกันด้วยเครื่องหมายคำพูด
Leandro Mana avatar
ad flag
ขอบคุณมากสำหรับความช่วยเหลือ !!! ได้ผล =D ฉันจะใส่ใจกับคำพูดต่อจากนี้ไป ขอบคุณอีกครั้ง

โพสต์คำตอบ

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