Score:-1

จะตัดส่วนของเส้นได้อย่างไร?

ธง in

ฉันต้องตัดสายในช่วงเวลาใดเวลาหนึ่ง ฉันต้องการแสดงชื่อ GPU แต่ชื่อเดียวเท่านั้น ไม่มีอะไรอื่น

inxi -Gx | grep อุปกรณ์แสดง:

อุปกรณ์-2: ผู้จำหน่าย NVIDIA GK107GLM [Quadro K1100M]: ไดรเวอร์ Dell: นูโว

อยากให้แสดงแบบนี้บ้างจัง

NVIDIA GK107GLM [Quadro K1100M]

จะตัดให้แสดงเฉพาะชื่อได้อย่างไร? มีวิธีการพิมพ์ช่วงในกรณีนี้จาก word Device ถึง word vendor หรือไม่

Bodo avatar
pt flag
โปรด [แก้ไข] คำถามของคุณและแสดงตัวอย่างผลลัพธ์ของ `inxi -Gx | grep Device` และเอาต์พุตที่คาดไว้ [จัดรูปแบบเป็นโค้ด](https://stackoverflow.com/editing-help#code) คำถามนี้เกี่ยวกับการเขียนโปรแกรมเชลล์ / การประมวลผลข้อความ และไม่เกี่ยวข้องกับ Ubuntu โดยเฉพาะ ดังนั้นจึงอาจเหมาะกับ https://stackoverflow.com/
pLumo avatar
in flag
ไม่ทำงานสำหรับฉัน
pLumo avatar
in flag
ขอบคุณสำหรับการอัปเดตของคุณ อย่างไรก็ตาม โปรดตรวจสอบ: "*[...] และผลลัพธ์ที่คาดไว้ [จัดรูปแบบเป็นโค้ด](https://stackoverflow.com/editing-help#code)*"
Grzegorz Michalak avatar
in flag
ให้เอาต์พุต: กราฟิก: Device-1 Intel Core Processor รุ่นที่ 4 ไดรเวอร์กราฟิกรวม: i915
Score:2
ธง cn

ลองทำวิธีนี้:

inxi -Gx | sed -n 's/.*Device-.*: \(.*\) vendor.*/\1/p'
Grzegorz Michalak avatar
in flag
ใช่แล้ว! ขอบคุณมาก. คุณช่วยอธิบายวิธีการทำงานนี้ได้ไหม คำสั่งนี้
Apomelitos avatar
cn flag
แน่นอน. 1. -n param ระงับการพิมพ์พื้นที่รูปแบบอัตโนมัติ (ไม่มีเอาต์พุตอัตโนมัติจากคำสั่ง sed) 2. sed กำลังมองหารูปแบบนี้ `.*Device-.*: \(.*\) vendor.*` 3. `/\1/` - sed แทนที่บรรทัดที่ตรงกันทั้งหมดในกลุ่มการจับคู่แรก (ส่วนหนึ่งของรูปแบบในวงเล็บ `(.*\)`) 4. `/p` พารามิเตอร์ในตอนท้ายพิมพ์ช่องว่างรูปแบบปัจจุบัน (พิมพ์เส้นที่ตรงกัน)
Score:0
ธง cn
inxi -Gx | grep -oi nv.*]
inxi -Gx | awk '/Device/{พิมพ์ $2,$3,$4,$5}'
Score:0
ธง in

inxi -Gx | grep อุปกรณ์ | ตัด -d ':' -f 2 | sed 's/ ผู้ขาย//'

นี้ ตัดs ผลลัพธ์ลงในฟิลด์โดยใช้ ":" เป็นตัวคั่น จากนั้นจะให้ฟิลด์ที่สองแก่คุณ ใช้ sed แล้ว เพื่อตัดคำเฉพาะออกจากจุดสิ้นสุด

หากคุณทราบความยาว คุณสามารถตัดช่วงโดยใช้ ตัด, ดู ผู้ชายตัด สำหรับรายละเอียด

in flag
ฉันคิดว่าการใช้ `-G` จะตัดส่วนผู้ขายของสตริงออกหรือไม่
Score:0
ธง bd

สิ่งที่ต้องการ:

D=$(inxi -Gx | อุปกรณ์ grep)

ถ้า [[ $D =~ ^Device-2:([[:print:]]*)ผู้ขาย:([[:print:]]*)ไดรเวอร์:([[:print:]]*)$ ]]
แล้ว
  echo "พบอุปกรณ์: ${BASH_REMATCH[1]}"
อื่น
  echo "ไม่พบอุปกรณ์"
ไฟ
Grzegorz Michalak avatar
in flag
มันทำให้ฉันผิดพลาด ``` ข้อผิดพลาดทางไวยากรณ์: "(" ไม่คาดคิด (คาดว่า "จากนั้น") ```
Wayne Vosberg avatar
bd flag
คุณใช้ bash เวอร์ชันใด (`ทุบตี --version`)
Grzegorz Michalak avatar
in flag
5.0.3. มันควรจะทำงานกับ bash ที่ใหม่กว่าหรือไม่
Wayne Vosberg avatar
bd flag
ใช้งานได้กับ 5.1.4(1) เมื่อมองย้อนกลับไปที่การจับคู่ regexp ของบันทึกการเปลี่ยนแปลงและ BASE_REMATCH *อาจ* เป็นเวอร์ชันใหม่ตั้งแต่เวอร์ชัน 5.1
Grzegorz Michalak avatar
in flag
ฉันไม่สามารถอัปเดต bash ได้ มันบอกว่าใหม่ที่สุดที่เป็นไปได้ :/
bac0n avatar
cn flag
ลองเพิ่ม `#!/bin/bash`
Grzegorz Michalak avatar
in flag
อยู่ในบรรทัดแรกของสคริปต์
bac0n avatar
cn flag
บางทีคุณอาจพลาดเครื่องหมายอัฒภาค `]]; แล้ว`
Wayne Vosberg avatar
bd flag
ฉันเพิ่งรู้ว่าฉันมี RaspberryPI พร้อม bash 5.0.3(1) มันทำงานที่นั่นเช่นกัน คุณแน่ใจหรือไม่ว่าคุณป้อนบรรทัด `if [[ ... ]]` ถูกต้อง ถ้าเป็นเช่นนั้น ให้ลองเพิ่ม `set -x` ที่ส่วนเริ่มต้นของสคริปต์ ผลลัพธ์ที่ได้อาจให้เบาะแส

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา