Điểm:0

Bash Script: So sánh hai tệp văn bản

lá cờ by

Tôi tự hỏi làm thế nào tôi có thể làm điều này một cách hiệu quả. Với hai tệp, giả sử a.txt và b.txt, tôi muốn viết một tập lệnh bash để thực hiện các thao tác sau:

Mọi dòng trong a.txt chứa '*' không tồn tại trong b.txt sẽ được thêm vào cuối b.txt cùng với dấu thời gian.

grep "*" a.txt tiếng vang "$(ngày)" >> b.txt
pLumo avatar
lá cờ in
Vui lòng chỉnh sửa câu hỏi của bạn và thêm một số ví dụ về tệp của bạn và đầu ra dự kiến.
terdon avatar
lá cờ cn
Không có cách nào hiệu quả từ xa trong bash. Điều này _need_ có bị bash không? Tôi thấy bạn ít nhất cũng cởi mở với các công cụ không phải bash như `grep`, vậy chúng ta cũng có thể sử dụng `awk` hoặc `sed` hoặc `perl`, v.v. không? Shell, bất kỳ shell nào, là một công cụ khủng khiếp để xử lý văn bản: nó sẽ luôn chậm và không hiệu quả.
Taro avatar
lá cờ by
@terdon cảm ơn bạn đã khai sáng cho tôi.
Điểm:0
lá cờ za

Tôi khuyên bạn nên sử dụng tệp thứ ba để có kết quả, do đó bạn không làm hỏng tệp b.txt. Bạn có thể thử điều này:

cp b.txt c.txt 
cho dòng trong $(grep '*' a.txt); làm
    # cho mỗi dòng được tìm thấy trong a.txt
    echo "Đã tìm thấy: $line"
    grep -q $line b.txt # kiểm tra sự hiện diện của nó trong b.txt
    nếu [ $? -ne 0 ]; sau đó
        # nếu kết quả của grep không bằng 0
        # nó có nghĩa là không tìm thấy dòng trong b.txt
        # sau đó in dòng trong tệp thứ ba có dấu thời gian ở đầu
        tiếng vang "$(ngày): $line" >> c.txt
    fi
xong

Rõ ràng là có lẽ bạn chỉ nên cải thiện grep vì tôi không biết hàng mà bạn đang tìm kiếm '*' được soạn.

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