मैं blkid कमांड से USB नाम (MYUSB) को हथियाने की कोशिश कर रहा हूं। वर्तमान में, मेरे पास निम्न आउटपुट है। मैं उस USB का नाम लेना चाहता हूँ जो LABEL से शुरू होता है। तो आउटपुट सिर्फ MYUSB होगा। इसे कैसे प्राप्त किया जा सकता है?

$ blkid
/dev/sda1: UUID="88dd2cc5-0a4f-4477-b678-159613aaf920" TYPE="ext4"
/dev/sda2: UUID="ggxkwK-DZfA-DnTF-dWbn-msx6-egfo-GuGIuS" TYPE="LVM2_member"
/dev/mapper/vg_baldy1-lv_root: UUID="76ab63ba-e8c4-4040-9533-5c8562f739d4" TYPE="ext4"
/dev/mapper/vg_baldy1-lv_swap: UUID="462a170b-5e09-4b98-98ce-09e0a24009ab" TYPE="swap"
/dev/mapper/vg_baldy1-lv_home: UUID="c38c0b9a-1049-4e9f-8800-d68d2e450929" TYPE="ext4"
/dev/sdb1: LABEL="MYUSB" UUID="BF05-9FC6" TYPE="vfat"
0
tiger_groove 16 मई 2018, 01:08

1 उत्तर

सबसे बढ़िया उत्तर

कोशिश करें blkid | grep -o -P '(?<=LABEL=")([^"]*)'

यह blkid के आउटपुट को grep में पाइप करना चाहिए जो स्ट्रिंग का केवल वह हिस्सा देता है जो नियमित अभिव्यक्ति से मेल खाता है।

यह ध्यान दिया जाना चाहिए कि यदि blkid के आउटपुट में एक से अधिक लेबल मौजूद हैं, तो यह सभी लेबलों को एक नई लाइन पर आउटपुट करेगा। इसलिए केवल अंतिम लेबल प्राप्त करने के लिए, उपयोग करें:

blkid | grep -o -P '(?<=LABEL=")([^"]*)' | tail -1

रेगेक्स स्पष्टीकरण:

  • (?<=LABEL=") - दावा करता है कि स्ट्रिंग में वर्तमान स्थिति से तुरंत पहले LABEL=" है।
  • ([^"]*) - शून्य या अधिक वर्णों से मेल खाता है और कैप्चर करता है जो " नहीं हैं (उद्धरण चिह्नों के बीच का भाग)।
1
Callum Watkins 16 मई 2018, 22:10