Próbuję wyciągnąć dwie wartości liczbowe z ciągu i przypisać je do zmiennych za pomocą awk
( gawk
właśnie tego używam). Chcę wyciągnąć główne i drobne numery wersji z łańcucha wersji tmux do awk
zmiennych, np .:
- wkład
tmux 2.8
:;maj == 2
imin == 8
- wkład
tmux 1.9a
:;maj == 1
imin == 9
- wkład
tmux 2.10
:;maj == 2
imin == 10
Zakładając, że mój wkład pochodzi ze tmux -V
standardowego 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-shell
w .tmux.conf
pliku (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ść.