سؤال

أحب الحصول على معرف هوية النافذة (فايرفوكس فقط) من wmctrl، لقد حاولت WMCTRL -LP | Grep Firefox | awk -f "" "{print $ 1}" ولكن الإخراج لا يتطابق مع توقعاتي.ساعدنى من فضلك.

beer@beer-laptop# wmctrl -lp
0x0160001b -1 6504   beer-laptop x-nautilus-desktop
0x016000bd  0 6504   beer-laptop conference - File Browser
0x03e00003  0 0              N/A XBMC Media Center
0x03800081  0 7282   beer-laptop Xbmc_ConferenceWindow.py (~/.qlive/xbmc-conference) - gedit
0x0352f117  0 6963   beer-laptop Ask a Question - Stack Overflow - Chromium
0x01400040 -1 6503   beer-laptop Top Expanded Edge Panel
0x01400003 -1 6503   beer-laptop Bottom Expanded Edge Panel
0x03202deb  0 6866   beer-laptop beer@beer-laptop: ~/.qlive/conference
0x012000c4  0 12134  beer-laptop Common threads: Awk by example, Part 1 - Mozilla Firefox
beer@beer-laptop# wmctrl -lp | grep Firefox | awk -F"  " "{print $1}"
0x012000c4  0 12134  beer-laptop Common threads: Awk by example, Part 1 - Mozilla Firefox
  • في هذه الحالة أفضّل = 0x012000c4
هل كانت مفيدة؟

المحلول

wmctrl -lp | awk '/Firefox/ { print $1 }'

لا حاجة ل grep.أوك سوف تفعل ذلك.كما أن فاصل الحقول الافتراضي هو مسافة بيضاء، لذا لا داعي لتحديد ذلك.استخدم أيضًا علامات الاقتباس المفردة حول البرنامج النصي awk الخاص بك حتى لا تتوسع الصدفة $1.لهذا السبب فشل البرنامج النصي الخاص بك.تحول $1 إلى لا شيء وأصبح الإجراء المحرج الخاص بك "طباعة"، والذي يطبع السطر بأكمله.

نصائح أخرى

استبدل علامات الاقتباس المزدوجة حولها {print $1} مع علامات الاقتباس المفردة.وهذا سيمنع القشرة من التوسع $1.

أوك '{طباعة $1}'

يمكنك أن تفعل فقط:

wmctrl -lp | grep firefox | awk '{print $1}'
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top