วิธีแยกวิเคราะห์เอาต์พุตคำสั่งเป็น 5 หลักสุดท้าย?


0

จากคำสั่ง

watch -n1 "ifconfig eth0 | grep GiB"

ฉันได้รับผลลัพธ์ด้านล่าง

ตอนนี้ฉันแค่ต้องการตัวเลข 5 ตัวสุดท้ายก่อน (GiB) ฉันเขียน regex สำหรับมันและดูเหมือนว่าจะทำงาน

(\d{1,4})(?!.*\d)\sGiB

ปัญหาเดียวคือฉันไม่สามารถใช้กับคำสั่งฉันแสดงให้เห็นข้างต้น? ฉันใช้อูบุนตูด้วยความช่วยเหลือใด ๆ

ป้อนคำอธิบายรูปภาพที่นี่


1
ทำไมคุณไม่สามารถใช้กับ Grep (grep ใช้เวลา regexes)
แฟรงค์โทมัส

คำตอบ:


2

การทดสอบของคุณจะหยุดลงหากเซิร์ฟเวอร์รีบูตหรือไม่ว่างมาก: ifconfigปรับขนาดหน่วยที่ใช้ขึ้นอยู่กับปริมาณข้อมูลที่ถูกถ่ายโอน ตัวอย่างเช่นเซิร์ฟเวอร์ที่ฉันจัดการมี:

RX bytes:8697322454215 (7.9 TiB)  TX bytes:2151364718288 (1.9 TiB)

คุณอาจพบว่าง่ายต่อการดูเนื้อหาของ/proc/net/devซึ่งเป็นที่ifconfigรับข้อมูลจาก เนื้อหาของมันดูเหมือน

Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
  eth0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
    lo: 1204278   13020    0    0    0     0          0         0  1204278   13020    0    0    0     0       0          0
 wlan0: 658883131  568453    0    0    0     0          0         0 56092206  420036    0    0    0     0       0          0

คุณมีข้อเสนอแนะที่ดีรู้ว่าฉันสามารถอ่านผลลัพธ์ / proc / net / dev ในเวลาจริงได้อย่างไร
asadz

1
watch -n1 "cat /proc/net/dev"
Flup

1
ดีที่โดยเฉพาะอย่างยิ่งการทดสอบ regex จะทำลาย แต่ก็ยังคงเป็นเทคนิคที่เป็นไปได้ที่จะใช้ regex ที่จะแยกเอาท์พุท ifconfig เพียงใช้bytes:เป็นจุดยึดเชือกซึ่งควรจะคงที่
บ๊อบ

@Flup แต่ปัญหายังคงเหมือนเดิมฉันแค่ต้องการ 5 หมายเลขสุดท้ายไม่ใช่สิ่งทั้งหมด
asadz

0

ลอง sed:

| sed 's/.*(\([0-9.]*\s\)GiB)\s.*/\1/'

คุณช่วยแบ่ง regex ของฉันให้หน่อยได้ไหม? เช่น / \ 1 / หมายถึงอะไร
asadz

\1GiBมีตัวเลขก่อน
Endoro

มันเอาท์พุทสิ่ง ifconfig ให้ฉันทั้งหมดไม่ใช่แค่ tx, rx bytes
asadz

GNUมีรุ่นต่างๆมากมายเราใช้ล่าสุด
Endoro
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.