Saya mencoba menarik dua nilai numerik dari string dan menetapkannya ke variabel menggunakan awk
( gawk
adalah apa yang saya gunakan khusus). Saya ingin menarik nomor versi utama dan kecil dari string versi tmux ke dalam awk
variabel, misalnya:
- masukan
tmux 2.8
:;maj == 2
danmin == 8
- masukan
tmux 1.9a
:;maj == 1
danmin == 9
- masukan
tmux 2.10
:;maj == 2
danmin == 10
Dengan asumsi input saya berasal dari tmux -V
pada stdin, saat ini saya memiliki yang berikut:
tmux -V | awk '{
maj = +gensub(/([0-9]+)\..*/, "\\1", "g", $2);
min = +gensub(/.*\.([0-9]+).*/, "\\1", "g", $2);
# ...do something with maj and min...
}'
Ini berfungsi, tetapi karena banyak pengguna tmux tahu, menggunakan if-shell
dalam .tmux.conf
file (di mana saya berharap untuk menggunakan hal ini) dapat dengan mudah mengarah ke garis yang sangat panjang dalam file konfigurasi, jadi saya bertanya-tanya apakah ada cara untuk menggabungkan kedua variabel ini tugas menjadi satu pernyataan untuk menghemat ruang ... atau cara lain untuk mendapatkan dua variabel ini dari input dan menghemat ruang.
Saya sedang memikirkan sesuatu seperti:
awk '{ maj, min = +gensub(/([0-9]+)\.([0-9]+).*/, "\\1 \\2", "g", $2); }'
... seperti di Python, tetapi sintaks tertentu tidak ada di awk
. Apakah ada hal lain yang mungkin?
Perhatikan bahwa keterbacaan sebenarnya bukan masalah, hanya panjang.