команда awk не работает - PullRequest
0 голосов
/ 16 марта 2012

Мой код выдает ошибку в строке 3 с сообщением:

syntax error near unexpected token ``ARRAY1=$(awk 'FNR == 1{print $2}' $file)

set -vx
for file in ls bowtie-0.12.7-win32/bowtie-0.12.7/Hits_635_25bp/*.txt
ARRAY1=$(awk 'FNR == 1{print $2}' $file) # stores the value
let ARRAY1=$ARRAY1/100+1
echo $ARRAY1
value1=$(awk 'FNR == '$ARRAY1'{print $1}' bowtie-0.12.7-win32/bowtie-0.12.7/list_for_635_fasta.list) # GETS THE VALUES FROM THE LIST
echo $value1
value2=$(awk 'FNR == 1{print $2,$3,$4,$5,$6,$7}' bwa-0.5.9/bwa-0.5.9/GENOMES/${file:0:13})    # GETS THE VALUES FROM THE LIST
echo $value2
done

Буду признателен, если кто-то может указать на ошибку.Кажется, это имеет смысл, но я предполагаю, что что-то упустил.

Ответы [ 2 ]

1 голос
/ 16 марта 2012

Попробуйте это:

set -vx
for file in bowtie-0.12.7-win32/bowtie-0.12.7/Hits_635_25bp/*.txt; do
  ARRAY1=$( awk 'FNR == 1 { print $2 }' "$file" ) 
  let ARRAY1=$ARRAY1/100+1
  echo "$ARRAY1"
  value1=$( awk -v a1="$ARRAY1" 'FNR == a1 { print $1 }' bowtie-0.12.7-win32/bowtie-0.12.7/list_for_635_fasta.list ) 
  echo "$value1"
  value2=$( awk 'FNR == 1 { print $2, $3, $4, $5, $6, $7 }' bwa-0.5.9/bwa-0.5.9/GENOMES/"${file:0:13}" )  
  echo "$value2"
done

Если вы сообщите нам, какую оболочку вы используете, мы могли бы улучшить код.

1 голос
/ 16 марта 2012
for file in ls bowtie-0.12.7-win32/bowtie-0.12.7/Hits_635_25bp/*.txt

над строкой должно быть

for file in `ls bowtie-0.12.7-win32/bowtie-0.12.7/Hits_635_25bp/*.txt`
do
...