Napisałem skrypt, oto on:
#!/bin/bash
for num in {1..100}; do
awk -v file="eq2_"${num}".gro"
'BEGIN {
while (getline < file {
if ($NF < 3.477 || $NF > 7.947 || $(NF-1) < 12.741 || $(NF-1) > 22.240)
name[$1]=$1
}
}
{if ($1 != name[$1]) print}' eq2_$num.gro | tee eq3_$num.gro
done
Próbowałem też innym sposobem
#!/bin/bash
for num in {1..100}
do
count="eq2_"$variable".gro"
awk -v var="$count"
'BEGIN {
while (getline < count {
if ($NF < 3.477 || $NF > 7.947 || $(NF-1) < 12.741 || $(NF-1) > 22.240)
name[$1]=$1
}
}
{if ($1 != name[$1]) print}' eq2_$num.gro | tee eq3_$num.gro
done
Pojawia się błąd:
Użycie: awk [styl opcji POSIX lub GNU] -f plik_z_programem [--] plik ...
Użycie: awk [styl opcji POSIX lub GNU] [--] 'program' plik ...
Opcje POSIX: Długie opcje GNU (standard):
-f program --file=program
-F fs --field-separator=fs
-v zmienna=wartość --assign=zmienna=wartość
Krótkie opcje: Długie opcje GNU: (rozszerzenia)
-b --characters-as-bytes
-c --traditional
-C --copyright
-d[plik] --dump-variables[=plik]
-D[plik] --debug[=plik]
-e 'tekst-programu' --source='tekst-programu'
-E plik --exec=plik
-g --gen-pot
-h --help
-i plikinclude --include=plikinclude
-l biblioteka --load=biblioteka
-L[fatal|invalid] --lint[=fatal|invalid]
-M --bignum
-N --use-lc-numeric
-n --non-decimal-data
-o[plik] --pretty-print[=plik]
-O --optimize
-p[plik] --profile[=plik]
-P --posix
-r --re-interval
-S --sandbox
-t --lint-old
-V --version
Aby zgłosić błąd, prosimy zobaczyć węzeł `Bugs' w `gawk.info'
lub rozdział p.t. `Reporting Problems and Bugs' w wydrukowanej
dokumentacji.
gawk jest językiem skanowania i przetwarzania wzorców.
Program domyślnie czyta standardowe wejście i zapisuje standardowe wyjście.
Przykłady:
gawk '{ suma += $1 }; END { print suma }' plik
gawk -F: '{ print $1 }' /etc/passwd
./delete_water.sh: linia 11: $'BEGIN {\n\t\twhile (getline < file {\n\t\t\tif ($NF < 3.477 || $NF > 7.947 || $(NF-1) < 12.741 || $(NF-1) > 22.240) \n\t\t\t\tname[$1]=$1\n\t\t\t}\n\t\t} \n\t{if ($1 != name[$1]) print}': nie znaleziono polecenia
Nie rozumiem, dlaczego jak używam zmiennej z powłoki do getline to są problemy, napisałem banalny skrypt i tu wszystko działa jak złoto
#!/bin/bash
for variable in {1..100}
do
count="Hello"$variable"world"
awk -v var="$count" 'BEGIN {print var}'
done