Điểm:0

Làm cách nào tôi có thể đánh dấu các dòng của tệp bắt đầu bằng abc và KHÔNG kết thúc bằng xyz?

lá cờ de

Tôi có một tập lệnh hàng ngày truy xuất số liệu thống kê phần cứng từ tất cả các máy chủ RHEL của tôi mỗi đêm và lưu chúng vào một yyyymmdd_daily.log tập tin. Tôi có các tập lệnh khác mà tôi chạy trên các tệp này để trích xuất dữ liệu cụ thể (ví dụ: Ổ đĩaArrayStatus, Trạng thái phần cứng, ĐĩaFreeSpace, v.v.) cho các nhiệm vụ khác nhau.

Ví dụ Trạng thái phần cứng đầu ra kịch bản:

#######################
Máy chủ: abc
** Người hâm mộ **
Sức khỏe: Được
** Nguồn điện **
Dự phòng: Đầy đủ
#######################
Máy chủ: bcd
** Người hâm mộ **
Sức khỏe: Một phần
** Nguồn điện **
Dự phòng: Một nửa
#######################
Máy chủ: cde
** Người hâm mộ **
Sức khỏe: Xuống
** Nguồn điện **
Dự phòng: Không có
#######################
v.v... cho 44 máy chủ

Vì hiếm khi xảy ra bất kỳ lỗi nào, tôi muốn tô màu các dòng hiển thị bất kỳ loại lỗi nào khi tôi chạy tập lệnh. Tôi có thể chọn các dòng để xem xét kỹ lưỡng bằng grep:

./Phần cứngStatus | grep '^Sức khỏe\|^Dự phòng\|$'

Nhưng từ đây, tôi CHỈ cần tô màu những dòng đã xem xét kỹ lưỡng mà KHÔNG kết thúc bằng những câu trả lời thỏa đáng tương ứng của chúng:

./Phần cứngStatus | grep --color=auto -v 'Ok$\|Full$'

Tôi đã thử chuyển câu lệnh grep lựa chọn dòng sang grep thứ hai hoặc bằng cách sử dụng egrep, nhưng nó chỉ loại bỏ bất kỳ dòng nào không có phản hồi thỏa đáng từ đầu ra của tập lệnh.

Bất kỳ sự trợ giúp nào cũng sẽ được đánh giá cao.

lá cờ in
Có lý do nào khiến bạn phát minh lại bánh xe và không sử dụng giải pháp giám sát phù hợp không?
Điểm:1
lá cờ br
Mox

Bạn có thể sử dụng màu sắc gói trong Python để viết một bộ lọc đơn giản (hoặc có thể bao gồm nó trong tập lệnh HardwareStatus của bạn, nếu nó được viết bằng Python)

#!/usr/bin/env python3

nhập tập tin đầu vào
từ colorama nhập init, Trước, Sau, Kiểu

trong đó()
cho dòng trong fileinput.input():
    tin nhắn = line.strip()
    if (("Sức khỏe:" trong tin nhắn và "Ok" không có trong tin nhắn) hoặc
        ("Dự phòng:" trong tin nhắn và "Đầy đủ" không có trong tin nhắn)):
        print(Back.RED + Fore.YELLOW + message + Style.RESET_ALL)
    khác:
        in (tin nhắn)

Để sử dụng tập lệnh trên, chỉ cần chuyển đầu ra của HardwareStatus sang tập lệnh đó như bạn đã làm với grep trong ví dụ ở trên.

Nhìn thấy tài liệu Colorama để biết chi tiết.

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