Я пытаюсь написать простой bash-скрипт, запущенный в sh, который позволяет мне создавать новый выходной файл, начиная с входного файла и удерживая каждую строку, начинающуюся с ">", в то время как для каждой строки, которая не чтобы удовлетворить это требование, он должен удалить каждый третий символ и затем повесить его в новом файле.
входной файл:
>0197_16S
-AAAAACATGTCCTCTTGTTTATA-----TNTGAGGTTTGACCTGCCCTATG--A---
>0688_16S
-----ACATCTTCTCTTGAGTTAT-----TTTGAGATATGACCTGCCCAATG--A-T-
.
.
.
.
sh скрипт:
while IFS= read line; do
if [ "$line" = ">"* ]; then echo "$line" >> output.txt
else
var=$(echo "$line" | awk -vFS= '{for (i = 1; i <=NF; i+3) {printf $i(i+1)} printf "\n"}');
echo "$var" >> output.txt
fi;
done <foo.txt
оператор else работает, однако условие if никогда не проверяется, удаляя каждый третий символ также из строк, начинающихся с символа ">".
фактическая мощность:
>09716
-AAACAGTCTTTTTAT----NTAGTTGACTCCTAG-A--
>08816
----CACTCTTTAGTA----TTAGTAGACTCCAAG-A--
.
.
.
ожидаемый результат:
>0197_16S
-AAACAGTCTTTTTAT----NTAGTTGACTCCTAG-A--
>0688_16S
----CACTCTTTAGTA----TTAGTAGACTCCAAG-A--
.
.
.