Score:0

grep คำเฉพาะจากบรรทัดโดยใช้คำสั่ง grep/awk

ธง sd
lee

ฉันลอง cmd นี้:

# ภูเขา | grep -E '\s/dev/shm\s' | awk -F "(" '{พิมพ์ $NF}'

ความคาดหวัง:

rw,nosuid,nodev,seclabel

สิ่งที่ฉันได้รับนี้:

rw,nosuid,nodev,seclabel)

และฉันก็ได้ลองอันนี้ด้วย:

เมานต์ | grep -E '\s/dev/shm\s' | awk -F "(" '{พิมพ์ $NF}' | ตัด -c -24
rw,nosuid,nodev,seclabel

ฉันสามารถรับ wordm ที่แน่นอนได้ แต่โดยค่าเริ่มต้นมีคำใดคำหนึ่งไม่ได้อยู่ที่นั่น มันจะใช้งานไม่ได้ ดังนั้นฉันจึงต้องลบอักขระนี้ออก ) ในที่สุด ใครรู้เรื่องนี้บ้าง? สอนฉันแก้ปัญหานี้

FedKad avatar
cn flag
คุณลอง: `เมานต์ | grep -E '\s/dev/shm\s' | awk -F "[()]" '{print $2}'` ?
sd flag
lee
ขอบคุณสำหรับการตอบกลับ! มันใช้งานได้ดี
Score:2
ธง cn

ฉันเดาว่าผลลัพธ์ของคุณ เมานต์ | เกรป คำสั่งเป็นดังนี้:

$ ภูเขา | grep -E '\s/dev/shm\s'
tmpfs บน /dev/shm ประเภท tmpfs (rw,nosuid,nodev,inode64)

ดังนั้นสิ่งที่คุณต้องการ (ฉันเดาอีกครั้งที่นี่) คือข้อความระหว่างวงเล็บในบรรทัดที่มี /dev/shm. ถ้าเป็นเช่นนั้น ลอง:

$ ภูเขา | grep -oP '\s/dev/shm\s.+\(\K[^)]+'
rw,nosuid,nodev,inode64

เดอะ -o ตัวเลือกบอก เกรป ให้พิมพ์เฉพาะส่วนที่ตรงกันของบรรทัดและ -ป เปิดใช้งาน PCRE (Perl Compatible Regular Expressions) ซึ่งให้เรา \เค สำหรับ "ละเว้นทุกสิ่งที่ตรงกันจนถึงจุดนี้" ดังนั้นนิพจน์ทั่วไปจะค้นหา /dev/shm ล้อมรอบด้วยช่องว่าง จากนั้นอักขระให้มากที่สุดจนกว่าจะมีวงเล็บเปิด (.+\(). ทุกสิ่งจนถึงตอนนี้ถูกละเว้นเนื่องจาก \เค แล้วเราก็จับคู่ non ที่ยาวที่สุด-) ตัวอักษร ([^)]+).


หากจำเป็นต้องใช้จริงๆ อึดอัด ด้วยเหตุผลบางอย่าง ไม่จำเป็นต้องมี เกรป:

$ ภูเขา | awk -F'[()]' '/\s\/dev\/shm\s/{พิมพ์ $(NF-1)}'
rw,nosuid,nodev,inode64
sd flag
lee
ขอบคุณมาก! มันใช้งานได้ดี
Score:2
ธง cn

ค้นหา โดยปกติจะใช้เพื่อค้นหาและแสดงรายละเอียด เช่น ชื่ออุปกรณ์ การเมาต์ หรือประเภทระบบไฟล์

findmnt -n --target /dev/shm --output=ตัวเลือก

คล่องแคล่ว ภูเขา พบได้ใน /proc/เมานต์ และมีจำนวนคอลัมน์คงที่ ซึ่งทำให้แยกวิเคราะห์ได้ง่าย:

ขณะอ่าน -r _ a _ b _; ทำ
    [[ $a = /dev/shm ]] && echo $b
เสร็จแล้ว < /proc/mounts
sd flag
lee
ขอบคุณสำหรับการตอบกลับ! มันใช้งานได้ดี
terdon avatar
cn flag
@lee หากคำตอบข้อใดข้อหนึ่งแก้ไขปัญหาของคุณได้ โปรดใช้เวลาสักครู่และ [ยอมรับ](//askubuntu.com/help/someone-answers) โดยคลิกที่เครื่องหมายถูกทางด้านซ้าย นั่นเป็นวิธีที่ดีที่สุดในการแสดงความขอบคุณบนเว็บไซต์ Stack Exchange

โพสต์คำตอบ

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