Điểm:-1

Làm thế nào để cắt một phần của dòng?

lá cờ in

Tôi cần cắt dòng trong thời điểm cụ thể, tôi muốn hiển thị tên GPU, nhưng chỉ tên, không có gì khác.

inxi -Gx | grep Thiết bị đang hiển thị:

Thiết bị-2: Nhà cung cấp NVIDIA GK107GLM [Quadro K1100M]: Trình điều khiển Dell: nouveau

Tôi muốn nó hiển thị một cái gì đó như thế này

NVIDIA GK107GLM [Quadro K1100M]

Làm cách nào để cắt cái này để chỉ hiển thị tên? Có cách nào để in phạm vi, trong trường hợp này là từ Thiết bị từ sang nhà cung cấp từ.

Bodo avatar
lá cờ pt
Vui lòng [chỉnh sửa] câu hỏi của bạn và hiển thị đầu ra ví dụ của `inxi -Gx | grep Device` và kết quả dự kiến, [được định dạng là mã](https://stackoverflow.com/editing-help#code). Câu hỏi này là về lập trình Shell/xử lý văn bản và không liên quan cụ thể đến Ubuntu, vì vậy nó có thể phù hợp hơn trên https://stackoverflow.com/
pLumo avatar
lá cờ in
Không làm việc cho tôi
pLumo avatar
lá cờ in
Tuy nhiên, cảm ơn bạn đã cập nhật, vui lòng kiểm tra thêm: "*[...] và đầu ra dự kiến, [được định dạng dưới dạng mã](https://stackoverflow.com/editing-help#code).*"
Grzegorz Michalak avatar
lá cờ in
Nó cung cấp đầu ra: Đồ họa: Trình điều khiển đồ họa tích hợp Bộ xử lý Intel thế hệ thứ 1 Device-1: i915
Điểm:2
lá cờ cn

Cố gắng làm theo cách này:

inxi -Gx | sed -n 's/.*Device-.*: \(.*\) nhà cung cấp.*/\1/p'
Grzegorz Michalak avatar
lá cờ in
Vâng, đó là nó! Cảm ơn rất nhiều. Bạn có thể mô tả làm thế nào điều này hoạt động? lệnh này
Apomelitos avatar
lá cờ cn
Chắc chắn rồi. 1. -n param chặn tự động in không gian mẫu (không có đầu ra tự động từ lệnh sed) 2. sed đang tìm mẫu này `.*Device-.*: \(.*\) vendor.*` 3. `/\1/` - sed thay thế tất cả các dòng phù hợp với nhóm phù hợp đầu tiên (một phần của mẫu trong ngoặc `(.*\)`) 4. `/p` param cuối cùng in không gian mẫu hiện tại (in các dòng phù hợp)
Điểm:0
lá cờ cn
inxi -Gx | grep -oi nv.*]
inxi -Gx | awk '/Device/{in $2,$3,$4,$5}'
Điểm:0
lá cờ bd

Cái gì đó như:

D=$(inxi -Gx | thiết bị grep)

if [[ $D =~ ^Device-2:([[:print:]]*)nhà cung cấp:([[:print:]]*)trình điều khiển:([[:print:]]*)$ ]]
sau đó
  echo "Đã tìm thấy thiết bị: ${BASH_REMATCH[1]}"
khác
  echo "Không tìm thấy thiết bị"
fi
Grzegorz Michalak avatar
lá cờ in
Nó cho tôi lỗi Lỗi cú pháp ```: "(" không mong đợi (mong đợi "sau đó") ```
Wayne Vosberg avatar
lá cờ bd
Bạn đang sử dụng phiên bản bash nào? (`bash --version`)
Grzegorz Michalak avatar
lá cờ in
5.0.3. nó sẽ hoạt động trên bash mới hơn?
Wayne Vosberg avatar
lá cờ bd
Nó hoạt động với 5.1.4(1). Nhìn lại đối sánh biểu thức chính quy nhật ký thay đổi và BASE_REMATCH *có thể* là mới kể từ 5.1.
Grzegorz Michalak avatar
lá cờ in
Tôi không thể cập nhật bash, nó nói là mới nhất có thể:/
bac0n avatar
lá cờ cn
thử thêm `#!/bin/bash`
Grzegorz Michalak avatar
lá cờ in
Nó nằm ở dòng đầu tiên của kịch bản
bac0n avatar
lá cờ cn
có lẽ bạn đã bỏ lỡ dấu chấm phẩy `]]; sau đó`
Wayne Vosberg avatar
lá cờ bd
Tôi mới nhận ra rằng mình có RaspberryPI với bash 5.0.3(1). Nó hoạt động ở đó là tốt. Bạn có chắc mình đã nhập chính xác dòng `if [[ ... ]]` không? Nếu vậy, hãy thử thêm `set -x` vào đầu tập lệnh - khi đó đầu ra có thể cung cấp manh mối.
Điểm:0
lá cờ in

inxi -Gx | thiết bị grep | cắt -d ':' -f 2 | sed 's/nhà cung cấp//'

Cái này cắt tỉas đầu ra vào các trường bằng cách sử dụng ":" làm dấu phân cách, sau đó nó cung cấp cho bạn trường thứ hai. Sử dụng sed sau đó để loại bỏ từ cụ thể ở cuối.

Nếu bạn biết độ dài thì bạn có thể cắt một phạm vi bằng cách sử dụng cắt tỉa, xem người đàn ông cắt để biết chi tiết.

lá cờ in
Tôi nghĩ rằng chỉ cần sử dụng `-G` sẽ loại bỏ phần nhà cung cấp của chuỗi?

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