Intereting Posts
Предотвращение зависания wget при обнаружении ошибки 500 Удаленный пользователь, но файлы сохраняют свою группу? Статические файлы дают неизменное значение контрольной суммы для Linux Обрезка одной части, если она равна другой части? Альтернативная клавиатура-триггерная пусковая установка для определенного типа файла в файловых менеджерах (Dolphin and / or nautilus) Извлеките значение из вывода команды и используйте значение в качестве параметра для следующей команды Mount Samba в Linux Mint Выход монитора Trim (из-за мертвых пикселей) Кэшированная память, но используется swap BTRFS: добавление нового жесткого диска как / home после установки Скрытие командных сообщений в сценарии командной оболочки Символическая ссылка, собирающая неправильный каталог Как локально установить каталог Google Диска? Почему «человекочитаемый» необходим, а не дефолт? сдвинутый экран с картой AMD оба драйвера

sed в поиске сценариев bash

У меня есть следующая проблема относительно команды sed. Я хочу сделать следующее:

sed '1 d' filename.fa | sed "1i\>filename\n" > filename_Edited.fa 

где строка файла frist заменяется на «> filename». Это делается в 2 этапа: удаление первой строки, а затем вставка новой, которая содержит желаемый «текст». Команда работает так, как если бы она была напечатана непосредственно в консоли (без переменных). Однако мне нужна эта команда, интегрированная в следующий скрипт, где имя файла теперь зависит от переменной:

 #!/bin/bash CODE=`cut -c 7-21 Data.txt` cd ../FASTA_SEC/ for i in ${CODE} do sed '1 d' ${CODE}.fa | sed "1i\>${CODE}\n" > ${CODE}_Edited.fa done 

Я получаю следующую ошибку, когда этот скрипт запускается для каждой итерации цикла:

 try: line 8: ${CODE}_Edited.fa: ambiguous redirect 

Я не понимаю, что неправильно в sed sintaxis или в общем скрипте, порой он должен работать, но это не так. Любая подсказка?

Я также попытался запустить скрипт без частички, только выполнив команду sed, которая удаляет первую строку из текста:

 #!/bin/bash CODE=`cut -c 7-21 Data.txt` cd ../FASTA_SEC/ for i in ${CODE} do sed '1 d' ${CODE}.fa > ${CODE}_Edited.fa done 

Однако он снова возвращает прежнюю ошибку!

Спасибо за помощь!

**. fa известны как fasta, которые являются своего рода форматом обычного текста, используемым в последовательностях ДНК

Может быть, проще не использовать sed для prepend, а скорее cat :

 #!/bin/bash header=$(mktemp) scratch=$(mktemp) trap "rm -f $header $scratch" EXIT cd ../FASTA_SEC/ for CODE in $(cut -c 7-21 Data.txt); do echo ">${CODE}_" > $header if [[ -r "${CODE}.fa" ]]; then sed '1d' "${CODE}.fa" > $scratch cat $header $scratch > ${CODE}_Edited.fa fi done