Điểm:0

Đếm từ cho nhiều tệp .txt trong linux

lá cờ mx

Tôi cần tìm các từ trong nhiều tệp .txt bằng cli linux. Hiện tại tôi đang sử dụng lệnh sau:

mèo *.txt|wc -w

Tôi đã tạo một thư mục thử nghiệm để thực hành lệnh và có vẻ như nó hoạt động đối với từng tệp .txt riêng lẻ nhưng không hoạt động đúng cách đối với tất cả các tệp .txt. Tôi có một thư mục có 5 tệp, trong đó 4 tệp chứa 5 từ và 1 tệp là emtpy. Đối với cá nhân mèo textfile.txt|wc -w nó đưa ra câu trả lời đúng. Nhưng đối với số đếm, nó cho 17 khi nó phải là (4 nhân 5 + 0 nhân 0 =) 20 Ai đó có thể cho tôi biết tại sao số đếm được đưa ra là 17 trong khi số thực là 20 không?

pLumo avatar
lá cờ in
không thể sao chép, bạn sẽ cần thêm các tệp đầu vào của mình.
pLumo avatar
lá cờ in
Các liên kết này không liên quan gì đến câu hỏi.
Điểm:3
lá cờ tr

Bạn có thể chạy

wc -w *.txt

Điều này sẽ cung cấp cho bạn số từ cho mỗi tệp và tổng số tiền ở hàng cuối cùng.

Hóa ra, vấn đề của OP là một dòng mới bị thiếu trong một trong các tệp. Điều này gây ra con mèo *txt để kết hợp nhiều từ thành một và do đó dẫn đến đếm sai. Lệnh trên mạnh mẽ hơn trong tình huống này vì nó xử lý từng tệp riêng lẻ.

lá cờ mx
Tôi đã tìm ra lý do tại sao, không có dấu phân cách nên ký tự cuối cùng của tệp trước được gắn vào ký tự đầu tiên của tệp sau.
lá cờ mx
Cảm ơn @wayne_yux Tôi đã vật lộn với nó cả buổi sáng với thời hạn sắp đến. Thật là một điều nhỏ nhặt ngu ngốc mà giải pháp của bạn hoạt động, HERO :)
Maarten Meijer avatar
lá cờ fr
Nếu bạn đặt một dòng mới hoặc khoảng trắng ở cuối tất cả các tệp (ví dụ: điều này xảy ra tự động với `echo`), bạn chỉ có thể sử dụng lệnh trong câu hỏi
Wayne_Yux avatar
lá cờ tr
@pLumo thực hiện `cat` trước sẽ chỉ cung cấp cho bạn tổng số từ. Nếu bạn chạy `wc -w` trên tất cả các tệp, bạn sẽ nhận được một số trên mỗi tệp. Điều đó làm cho cách gỡ lỗi dễ dàng hơn. Có vẻ như, vấn đề của OP là không có dòng mới ở cuối một tệp. Điều đó sẽ khiến `cat` kết hợp một số từ. Nếu bạn xử lý các tệp riêng lẻ, điều này không xảy ra
pLumo avatar
lá cờ in
đúng đúng :-) có ý nghĩa.
Điểm:1
lá cờ hr

Lời giải thích có khả năng nhất là các dòng cuối cùng của tệp của bạn không được ngắt dòng mới đúng cách, do đó khi bạn con mèo chúng, từ đầu tiên của tệp tiếp theo sẽ được thêm vào từ cuối cùng của tệp trước đó:

Bán tại. được cho

steeldriver@pc:~$ printf 'foo\nbar\nbaz\nbam\nboo' | tee {1..4}.txt
foo
quán ba
baz
bam
boosteeldriver@pc:~$ printf '' > 5.txt

sau đó

steeldriver@pc:~$ wc -w {1..5}.txt
 5 1.txt
 5 2.txt
 5 3.txt
 5 4.txt
 0 5.txt
tổng cộng 20

nhưng

steeldriver@pc:~$ cat {1..5}.txt | wc -w
17

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.