AWK drukowanie tekstu ze zmiennymi.

0

Napisałem skrypt w AWK:

#!/bin/bash
awk 'BEGIN {
min_x=0 
max_x=0 
min_y=0 
max_y=0 
min_z=-2 
max_z=3.833 
print "Koordynaty pomiędzy którymi zliczane są cząsteczki:" 
print "1.min_x:"
print min_x
print "2.max_x:"
print max_x
print "3.min_y:"
print min_y
print "4.max_y:"
print max_y
print "5.min_z:"
print min_z
print "6.max_z:"
print max_z
count = 0; }
{if ($1 ~ /SOL$/ && $NF > min_z && $NF < max_z)
  count++}
END  {
print "Liczba cząsteczek pomiędzy koordynatami wynosi:"
print count;
} ' em.gro```
Zastanawia mnie jedank jak zrobić, żeby nie musieć pisać tyle razy print i mieć to wszystko w jednej linii. Tak jak np. w Pythonie mam

name="jakub"
age="18"
print("%s is %d years old." % (name, age))

2

Chodzi ci o printf ?

2

Chodzi Ci o coś takiego?

printf("1.min_x %f \n 2.min_y %f", min_x, min_y") 
3

po pierwsze printf, jak pokazano u góry. Po drugie, zamiast tylu zmiennych, użyłbym słownika. Wtedy mógłbyś wypisać wszystkie wartości w pętli. Po trzecie masz:

{if ($1 ~ /SOL$/ && $NF > min_z && $NF < max_z)
  count++}

Lepiej napisać:

$1 ~ /SOL$/ && $NF > min_z && $NF < max_z {
  count++;
}

Może byś poczytał o języku, panie recydywisto? :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1