Anda dapat melewati grep
dan selesaikan ini dalam satu awk
:
xrandr | awk 'NF >= 3 && /[0-9]+x[0-9]+/ {sub(/[+-].*/, "", $3); print $3}'
1920x1200
1920x1200
primary
1029x1200
Alternatif tunggal gnu grep
solusi:
xrandr | grep -oP 'connected\h+\K(\d+x\d+|\S+)'
(.*\d+x\d+)*^(?![\+]+\d\+\d)
mencocokkan pola dan menangkap ke dalam Grup 1 urutan opsional dari nol atau lebih karakter apa pun selain karakter pemecah baris, sebanyak mungkin, lalu 1+ digit, x
, 1+ digit, dan kemudian memerlukan awal posisi string (ini membuat pola selalu gagal! ) dan pastikan tidak ada satu atau lebih +
karakter, digit, +
dan satu digit tepat di sebelah kanan lokasi saat ini. Ini terlihat seperti pola yang sangat korup yang tidak pernah cocok dengan string apa pun.
Logika Anda dapat diimplementasikan sebagai
xandr | grep -oP '\b\d+x\d+(?!(?:\+\d+\+)?\d)'
Lihat demo online dan demo regex.
Detail :
-oP
- keluaran hanya cocok dan aktifkan mesin regex PCRE\b\d+x\d+(?!(?:\+\d+\+)?\d)
:\b
- batas kata\d+
- satu atau lebih digitx
-x
\d+
- satu atau lebih digit(?!(?:\+\d+\+)?\d)
- lookahead negatif yang gagal mencocokkan jika, tepat di sebelah kanan lokasi saat ini, terdapat(?:\+\d+\+)?
- urutan opsional+
, satu atau lebih digit dan+
\d
- satu digit.
Magento 2 - Setelah menambahkan ke keranjang, halaman keranjang menunjukkan kosong
Mengapa wprintf mentransliterasi teks Rusia di Unicode ke bahasa Latin di Linux?