У меня есть этот файл, где я хочу прочитать его, начиная с определенного номера строки, до строки.Я уже использовал
awk "NR> = $ LINE && NR <= $ ((LINE + 121)) {print}" db_000022_model1.dlg </p>
для чтения изопределенная строка до и увеличенный номер строки, но сейчас мне нужно сделать так, чтобы она сама остановилась на определенной строке, чтобы иметь возможность использовать ее в других файлах.
DOCKED: ENDBRANCH 7 22
DOCKED: TORSDOF 3
DOCKED: TER
DOCKED: ENDMDL
Я хочу остановить еепосле того как он достигнет
DOCKED: ENDMDL
#!/bin/bash
# This script is for extracting the pdb files from a sorted list of scored
# ligands
mkdir top_poses
for d in $(head -20 summary_2.0.sort | cut -d, -f1 | cut -d/ -f1)
do
cd "$d"||continue
# find the cluster with the highest population within the dlg
RUN=$(grep '###*' "$d.dlg" | sort -k10 -r | head -1 | cut -d\| -f3 | sed 's/ //g')
LINE=$(grep -ni "BEGINNING GENETIC ALGORITHM DOCKING $RUN of 100" "$d.dlg" | cut -d: -f1)
echo "$LINE"
# extract the best pose and correct the format
awk -v line="$((LINE + 14))" "NR>=line; /DOCKED: ENDMDL/{exit}" "$d.dlg" | sed 's/^........//' > "$d.pdbqt"
# convert the pdbqt file into pdb
#obabel -ipdbqt $d.pdbqt -opdb -O../top_poses/$d.pdb
cd ..
done
Когда я пытаюсь
awk -v line = "$ ((LINE+ 14)) "" NR> = line; / DOCKED: ENDMDL / {exit} "" $ d.dlg "|sed 's /^........//'> "$ d.pdbqt"
Так же, как в терминале оболочки, все работает.Но в скрипте выводится пустой файл.