Điểm:1

Trích xuất thông tin cụ thể từ tệp

lá cờ cn

Tôi có một tệp được tạo từ một lệnh mà tôi chạy trên hệ thống của mình. Sau khi tệp được tạo, tôi chỉ muốn trích xuất thông tin cụ thể từ tệp đó nhưng chỉ nó đáp ứng các tiêu chí nhất định.

Đây là những gì tập tin của tôi trông giống như:

khách hàng: tc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        phiên bản: xxxxx
        uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
        uid người dùng: 10000
        người dùng: someuser
        máy chủ chính: xxx.xxx.xxx.xxx
        chế độ hoạt động: bình thường
        mac: XX:XX:XX:XX:XX:XX
        thời gian khóa: xx:xx:xx
        ipaddr: xxx.xxx.xxx.xxx
        tên máy chủ: tc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        kết nối-1: frdp::Green::Test
        kết nối-0: frdp::Purple::Test
khách hàng: tc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        phiên bản: xxxxx
        uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
        uid người dùng: 10000
        người dùng: someuser
        máy chủ chính: xxx.xxx.xxx.xxx
        chế độ hoạt động: bình thường
        mac: XX:XX:XX:XX:XX:XX
        thời gian khóa: xx:xx:xx
        ipaddr: xxx.xxx.xxx.xxx
        tên máy chủ: tc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        kết nối-0: frdp::Purple::Test
khách hàng: tc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        phiên bản: xxxxx
        uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
        uid người dùng: 10000
        người dùng: someuser
        máy chủ chính: xxx.xxx.xxx.xxx
        chế độ hoạt động: bình thường
        mac: XX:XX:XX:XX:XX:XX
        thời gian khóa: xx:xx:xx
        ipaddr: xxx.xxx.xxx.xxx
        tên máy chủ: tc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
khách hàng: tc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        phiên bản: xxxxx
        uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
        uid người dùng: 10000
        người dùng: someuser
        máy chủ chính: xxx.xxx.xxx.xxx
        chế độ hoạt động: bình thường
        mac: XX:XX:XX:XX:XX:XX
        thời gian khóa: xx:xx:xx
        ipaddr: xxx.xxx.xxx.xxx
        tên máy chủ: tc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        kết nối-0: frdp::Purple::Test
khách hàng: tc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        phiên bản: xxxxx
        uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
        uid người dùng: 10000
        người dùng: someuser
        máy chủ chính: xxx.xxx.xxx.xxx
        chế độ hoạt động: bình thường
        mac: XX:XX:XX:XX:XX:XX
        thời gian khóa: xx:xx:xx
        ipaddr: xxx.xxx.xxx.xxx
        tên máy chủ: tc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
khách hàng: tc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        phiên bản: xxxxx
        uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
        uid người dùng: 10000
        người dùng: someuser
        máy chủ chính: xxx.xxx.xxx.xxx
        chế độ hoạt động: bình thường
        mac: XX:XX:XX:XX:XX:XX
        thời gian khóa: xx:xx:xx
        ipaddr: xxx.xxx.xxx.xxx
        tên máy chủ: tc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        kết nối-0: frdp::Purple::Test
khách hàng: tc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        phiên bản: xxxxx
        uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
        uid người dùng: 10000
        người dùng: someuser
        máy chủ chính: xxx.xxx.xxx.xxx
        chế độ hoạt động: bình thường
        mac: XX:XX:XX:XX:XX:XX
        thời gian khóa: xx:xx:xx
        ipaddr: xxx.xxx.xxx.xxx
        tên máy chủ: tc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        kết nối-0: frdp::Green::Test
khách hàng: tc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        phiên bản: xxxxx
        uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
        uid người dùng: 10000
        người dùng: someuser
        máy chủ chính: xxx.xxx.xxx.xxx
        chế độ hoạt động: bình thường
        mac: XX:XX:XX:XX:XX:XX
        thời gian khóa: xx:xx:xx
        ipaddr: xxx.xxx.xxx.xxx
        tên máy chủ: tc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        kết nối-1: frdp::Green::Test
        kết nối-0: frdp::Purple::Test

Tôi chỉ muốn trích xuất các tên máy khách chỉ hiển thị kết nối với Purple và các máy khách không có kết nối vào một tệp mới. Tôi đã có thể thoát ra khỏi tên máy chủ hoặc kết nối bằng cách sử dụng awk chứ không phải những tên cụ thể mà không có kết nối.

CHỈNH SỬA: Tôi đã thêm các mục vào tệp.

James S. avatar
lá cờ de
Bạn có kiểm soát việc tạo tệp này không? Tức là, đây có phải là đầu ra của chương trình bạn đã viết không? Tổng quát hơn, lệnh nào đang tạo đầu ra này? tại sao đây là một câu hỏi về Ubuntu?
lá cờ cn
Lệnh tạo danh sách là độc quyền và hệ thống chạy trên Ubuntu. Tệp được tạo bằng cách chạy lệnh và chuyển hướng đầu ra thành một tệp. Đây là định dạng sau khi lệnh được chạy.
James S. avatar
lá cờ de
Rất nhiều ứng dụng chạy "trên Ubuntu", nhưng việc hỗ trợ các ứng dụng đó không phải là một câu hỏi chính xác *về* Ubuntu. Bạn đang hỏi một câu hỏi chung về xử lý văn bản và có hàng nghìn cách để phân tích cú pháp tệp đó. Bạn có thể thử hỏi trong unix và linux stackexchange tổng quát hơn.
lá cờ cn
Cảm ơn bạn đã giúp đỡ. Tôi sẽ làm điều đó.
Điểm:0
lá cờ cn

Tệp đầu vào của bạn quá ngắn để hiểu chính xác những gì bạn muốn. Nhưng bạn có thể thử điều này khi bắt đầu:

awk '/hostname|Purple/' myfile
lá cờ cn
Máy khách cuối cùng là máy khách không có kết nối đang hoạt động. Vì vậy, mục cuối cùng ngắn hơn. Tôi cũng cần kéo khách hàng đó vào danh sách mới của mình.
lá cờ cn
Tôi đã quản lý để đưa tên máy chủ có hoặc không có kết nối vào danh sách. awk -F '\t' 'tên máy chủ:/ || /connection/' myfile >> tinh lọc
Điểm:0
lá cờ jp

Nếu tôi hiểu chính xác những gì bạn muốn, thì đó là lọc các ứng dụng khách có kết nối không phải là 'Tím' (chỉ có 'Xanh lục' trong ví dụ của bạn, nhưng có thể là các màu khác).

Các lệnh sau sử dụng tiếng kêu để xóa các dòng có 'Màu tím', tr để tạo một dòng và sed để đặt ngắt dòng trước 'máy khách' và cuối cùng tiếng kêu để xóa các dòng còn lại có 'kết nối' và chỉ chọn phần thông tin mong muốn cho từng khách hàng.

Toàn bộ tập hợp thông tin:

< myfile grep -v 'Màu tím' | tr '\n' ' ' | tr -s ' ' ' ' | sed "s/ client/\nclient/g" \
| grep -v 'kết nối'

Tên máy chủ và bất cứ thứ gì được liệt kê phía sau:

< myfile grep -v 'Màu tím' | tr '\n' ' ' | tr -s ' ' ' ' | sed "s/ client/\nclient/g" \
| grep -v 'kết nối' | grep -o 'tên máy chủ: .*'

Chỉ tên máy chủ mà bạn muốn theo những gì tôi có thể đọc:

< myfile grep -v 'Màu tím' | tr '\n' ' ' | tr -s ' ' ' ' | sed "s/ client/\nclient/g" \
| grep -v 'kết nối' | grep -o 'tên máy chủ: [^ ]*'

Nhóm khác (cần được lọc ra) có tên máy chủ và kết nối không phải là 'Purple':

< myfile grep -v 'Màu tím' | tr '\n' ' ' | tr -s ' ' ' ' | sed "s/ client/\nclient/g" \
| grep 'kết nối' | grep -o 'tên máy chủ: .*'

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