Score:0

จำนวนคำสำหรับไฟล์ .txt หลายไฟล์ใน linux

ธง mx

ฉันต้องการค้นหาคำในไฟล์ .txt หลายไฟล์โดยใช้ linux cli ขณะนี้ฉันกำลังใช้คำสั่งต่อไปนี้:

แมว *.txt|wc -w

ฉันได้สร้างไดเร็กทอรีทดสอบเพื่อฝึกฝนคำสั่งและดูเหมือนว่าจะใช้ได้กับไฟล์ .txt แต่ละไฟล์ แต่ไม่สามารถดำเนินการได้อย่างถูกต้องสำหรับไฟล์ .txt ทั้งหมด ฉันมีไดเร็กทอรีที่มีไฟล์ 5 ไฟล์โดย 4 ไฟล์มี 5 คำและ 1 ไฟล์ว่างเปล่า สำหรับแต่ละบุคคล cat textfile.txt|wc -w มันให้คำตอบที่ถูกต้อง แต่สำหรับการนับจะให้ 17 เมื่อควรเป็น (4 คูณ 5 + 0 คูณ 0 =) 20 ใครช่วยบอกฉันทีว่าทำไมจำนวนที่ให้มาคือ 17 ในขณะที่จำนวนจริงคือ 20

pLumo avatar
in flag
ไม่สามารถทำซ้ำได้ คุณจะต้องเพิ่มไฟล์อินพุตของคุณ
pLumo avatar
in flag
ลิงก์เหล่านี้ไม่เกี่ยวข้องกับคำถาม
Score:3
ธง tr

คุณสามารถเรียกใช้

wc -w *.txt

ซึ่งจะให้จำนวนคำสำหรับแต่ละไฟล์และผลรวมทั้งหมดในแถวสุดท้าย

เมื่อปรากฎว่าปัญหา OPs คือการขึ้นบรรทัดใหม่ที่ขาดหายไปในไฟล์ใดไฟล์หนึ่ง สิ่งนี้ทำให้เกิด แมว *txt เพื่อรวมคำหลายคำเป็นหนึ่งเดียวและทำให้เกิดการนับผิด คำสั่งด้านบนมีประสิทธิภาพมากกว่าในสถานการณ์นี้เนื่องจากประมวลผลแต่ละไฟล์แยกกัน

mx flag
ฉันพบว่าเหตุใดจึงไม่มีตัวคั่น ดังนั้นอักขระตัวสุดท้ายจากไฟล์ก่อนหน้าจึงแนบกับอักขระตัวแรกของไฟล์ต่อไปนี้
mx flag
ขอบคุณ @wayne_yux ฉันต้องดิ้นรนกับมันมาตลอดทั้งเช้าพร้อมกับกำหนดเส้นตายที่จะมาถึง สิ่งเล็กๆ ที่โง่เขลาเช่นนี้ วิธีแก้ปัญหาของคุณได้ผล HERO :)
Maarten Meijer avatar
fr flag
หากคุณขึ้นบรรทัดใหม่หรือเว้นวรรคที่ส่วนท้ายของไฟล์ทั้งหมด (สิ่งนี้เกิดขึ้นโดยอัตโนมัติด้วย `echo` เป็นต้น) คุณสามารถใช้คำสั่งในคำถามได้
Wayne_Yux avatar
tr flag
@pLumo การทำ `cat` ก่อนจะให้จำนวนคำทั้งหมดเท่านั้น หากคุณเรียกใช้ `wc -w` ในทุกไฟล์ คุณจะได้รับตัวเลขต่อไฟล์ นั่นทำให้วิธีการดีบักง่ายขึ้น ดูเหมือนว่าปัญหา OPs คือไม่มีการขึ้นบรรทัดใหม่ที่ส่วนท้ายของไฟล์เดียว นั่นจะทำให้ `cat` รวมคำบางคำเข้าด้วยกัน หากคุณจัดการไฟล์ทีละไฟล์ สิ่งนี้จะไม่เกิดขึ้น
pLumo avatar
in flag
จริงจริง :-) เข้าท่า
Score:1
ธง hr

คำอธิบายที่เป็นไปได้มากที่สุดคือบรรทัดสุดท้ายของไฟล์ของคุณไม่ได้ขึ้นบรรทัดใหม่อย่างถูกต้อง ดังนั้นเมื่อคุณ แมว คำแรกของไฟล์ถัดไปจะต่อท้ายคำสุดท้ายของไฟล์ก่อนหน้า:

อดีต. ที่ให้ไว้

steeldriver@pc:~$ printf 'ฟู\nบาร์\nbaz\nbam\nboo' | ที {1..4}.txt
ฟู
บาร์
บาส
แบม
boosteeldriver@pc:~$ printf '' > 5.txt

แล้ว

steeldriver@pc:~$ wc -w {1..5}.txt
 5 1.txt
 5 2.txt
 5 3.txt
 5 4.txt
 0 5.txt
รวม 20

แต่

steeldriver@pc:~$ cat {1..5}.txt | สุขา-ว
17

โพสต์คำตอบ

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