Próbuję wyciągnąć dwie wartości liczbowe z ciągu i przypisać je do zmiennych za pomocą awk( gawkwłaśnie tego używam). Chcę wyciągnąć główne i drobne numery wersji z łańcucha wersji tmux do awkzmiennych, np .:
- wkład
tmux 2.8:;maj == 2imin == 8 - wkład
tmux 1.9a:;maj == 1imin == 9 - wkład
tmux 2.10:;maj == 2imin == 10
Zakładając, że mój wkład pochodzi ze tmux -Vstandardowego wejścia, obecnie mam następujące elementy:
tmux -V | awk '{
maj = +gensub(/([0-9]+)\..*/, "\\1", "g", $2);
min = +gensub(/.*\.([0-9]+).*/, "\\1", "g", $2);
# ...do something with maj and min...
}'
Działa to, ale jak wie wielu użytkowników tmux, użycie if-shellw .tmux.confpliku (gdzie mam nadzieję użyć tych rzeczy) może łatwo prowadzić do naprawdę długich linii w pliku konfiguracyjnym, więc zastanawiam się, czy istnieje sposób na połączenie tych dwóch zmiennych przypisania do jednej instrukcji, aby zaoszczędzić miejsce ... lub w jakikolwiek inny sposób uzyskać te dwie zmienne z danych wejściowych i zaoszczędzić miejsce.
Mam na myśli coś takiego:
awk '{ maj, min = +gensub(/([0-9]+)\.([0-9]+).*/, "\\1 \\2", "g", $2); }'
... jak w Pythonie, ale ta szczególna składnia nie istnieje awk. Czy jest coś jeszcze, co jest możliwe?
Pamiętaj, że czytelność nie jest tak naprawdę problemem, tylko długość.