Điểm:1

Đọc từ tệp văn bản và nhận hàng tương ứng từ tệp csv

lá cờ us

Tôi có một tệp văn bản có tên train_ids.txtvà một tệp csv có tên tập dữ liệu.csv.

Tệp văn bản chứa id Bằng cách này:

món ăn_1.png
món ăn_5.png

Tệp csv đầu vào có rất nhiều cột và hàng, nhưng cột đầu tiên chứa id. Col đầu tiên như sau:

món ăn_1 
món ăn_2 
món ăn_3 
món_4 
món_5 

Tôi muốn viết một tập lệnh bash để đọc các id từ tệp văn bản và lấy hàng tương ứng có các id này, sau đó đặt toàn bộ hàng vào một tệp csv mới để làm đầu ra.

Vì vậy, tệp csv đầu ra phải như thế này:

món_1 | sao cũng được_1
món_5 | sao cũng được_5

Ghi chú:

  • Trong tệp csv đầu ra, ý tôi là sao cũng được toàn bộ hàng
  • chúng ta phải loại bỏ .png từ tệp văn bản id để có thể tìm kiếm
  • Toàn bộ tệp văn bản chỉ bao gồm id như đã đề cập, không có dòng nào khác
  • Tệp văn bản id được sắp xếp nhưng tệp csv không được sắp xếp
  • id trong tệp văn bản chắc chắn nằm trong tệp csv, vì vậy chúng tôi không cần phải bỏ qua hoặc báo cáo bất cứ điều gì.

Tôi không biết làm thế nào để làm như vậy, bạn có thể giúp tôi?

lá cờ hr
... tương tự như [Tìm kết quả khớp trong tệp csv](https://askubuntu.com/a/1213425/178692)
terdon avatar
lá cờ cn
Vui lòng [chỉnh sửa] câu hỏi của bạn và cho chúng tôi biết thêm chi tiết. `sao cũng được` là gì? Toàn bộ hàng o của tệp csv? Chúng ta có cần xóa `.png` khỏi "id" không? Có thể có các phần mở rộng khác? Có thể có nhiều `.` trong một tên (ví dụ: `foo.png.bar`) không? Các tệp sẽ được sắp xếp sao cho dòng N trong một tệp tương ứng với dòng N trong tệp kia? Có nên bỏ qua hoặc báo cáo các dòng không có mục phù hợp không?
Abanoub Asaad avatar
lá cờ us
@terdon Chỉ cần cập nhật câu hỏi với các ghi chú bổ sung.
terdon avatar
lá cờ cn
Cảm ơn, nhưng vui lòng cho chúng tôi một ví dụ mà chúng tôi có thể sử dụng để kiểm tra các giải pháp của mình. Bạn đã cung cấp cho chúng tôi tệp ID chỉ có hai dòng và sau đó là tệp csv chỉ có một trường, vì vậy chúng tôi không thể tạo đầu ra mong muốn dựa trên thông tin đầu vào của bạn. Ngoài ra, bạn đang hiển thị tệp _unsorted_ ids và tệp _sorted_ "csv" nhưng sau đó nói rằng nó thực sự ngược lại. Cuối cùng, điều gì xác định một trường trong csv của bạn? Có dấu phẩy không? Không gian? tab? Các lĩnh vực được trích dẫn? Tất cả những điều này đều quan trọng để cung cấp cho bạn thứ mà bạn thực sự có thể sử dụng.
Điểm:1
lá cờ cn

Bạn không cần tập lệnh cho việc này, chỉ cần sử dụng dán. Bạn chưa cho chúng tôi biết dữ liệu thực của bạn như thế nào nên tôi đoán bạn có thứ gì đó như thế này:

$ cat train_ids.txt 
món ăn_1.png
món_2.png
món ăn_3.png
món_4.png
món ăn_5.png

tập dữ liệu con mèo $.csv
món_2, sao cũng được2
món_5, sao cũng được5
món_4, sao cũng được4
món_3, sao cũng được3
món_1, gì cũng được1

Nếu vậy, bạn có thể nhận được kết quả mong muốn với:

$ join -t, <(sed 's/\.png$//' train_ids.txt) <(sort dataset.csv)
món_1, gì cũng được1
món_2, sao cũng được2
món_3, sao cũng được3
món_4, sao cũng được4
món_5, sao cũng được5

Và để lấy tệp này dưới dạng tệp được phân tách bằng dấu gạch ngang thay vì tệp csv (tệp được phân tách bằng dấu phẩy), bạn có thể thực hiện:

$ tham gia -t, <(sed 's/\.png$//' train_ids.txt) <(sort dataset.csv) | sed 's/, / | /'
món_1 | sao cũng được1
món_2 | sao cũng được2
món_3 | sao cũng được3
món_4 | sao cũng được4
món_5 | sao cũng được5

Đă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.