Bir dize dışında iki sayısal değerleri çekmek ve bunları kullanarak değişkenleri atamak çalışıyorum awk
( gawk
özellikle ne kullanıyorum). awk
Değişkenlere bir tmux sürüm dizesi dışında büyük ve küçük sürüm numaralarını çekmek istiyorum , örneğin:
- girdi
tmux 2.8
:;maj == 2
vemin == 8
- girdi
tmux 1.9a
:;maj == 1
vemin == 9
- girdi
tmux 2.10
:;maj == 2
vemin == 10
Girişimin tmux -V
stdin'den geldiğini varsayarsak , şu anda aşağıdakilere sahibim:
tmux -V | awk '{
maj = +gensub(/([0-9]+)\..*/, "\\1", "g", $2);
min = +gensub(/.*\.([0-9]+).*/, "\\1", "g", $2);
# ...do something with maj and min...
}'
Bu çalışır, ancak kullanarak tmux know birçok kullanıcı olarak if-shell
içinde .tmux.conf
rahatlıkla yol açabilir (Bu tür şeyleri kullanmak için umut) dosyası gerçekten bu iki değişkeni birleştirmek için bir yol var olmadığını merak ediyorum bu yüzden, yapılandırma dosyasında uzun hatlar yerden tasarruf etmek için bir ifadeye atama ... ya da bu iki değişkeni girişten ayırıp yerden tasarruf etmenin başka bir yolu.
Şöyle bir şey düşünüyorum:
awk '{ maj, min = +gensub(/([0-9]+)\.([0-9]+).*/, "\\1 \\2", "g", $2); }'
... Python'da olduğu gibi, ancak söz konusu sözdizimi mevcut değil awk
. Mümkün olan başka bir şey var mı?
Okunabilirliğin gerçekten bir endişe olmadığını, sadece uzunluğa dikkat edin.