2012-03-05 2 views
1

Я бегу cygwin на Windows 7. Я использую инструмент обработки сигналов и в основном выполняет выравнивания. У меня было около 1200 входных файлов. Каждый файл имеет формат, указанный ниже.манипуляция с файлами в cygwin

формат input_file_ = «AC_XXXXXX.abc»

Первый шаг, который необходимо строить какие-то индексы для всех входных файлов, это было сделано с build-index командой инструмента и теперь каждый файл был 6 индексов, связанных с Это. Поэтому теперь у меня около 1200 * 6 = 7200 индексных файлов. Индексы имеют следующий вид.

indexes_format = "AC_XXXXXX.abc.1",
"AC_XXXXXX.abc.2",
"AC_XXXXXX.abc.3",
"AC_XXXXXX.abc.4",
«AC_XXXXXX. abc.rev.1" ,
"AC_XXXXXX.abc.rev.1"

Теперь мне нужно использовать эти индексы для выполнения выравнивания. Все 6 индексов каждого файла вызываются вместе, а заключительная операция выполняется следующим образом.

signal-processing-tool ..\path-to-indexes\AC_XXXXXX.abc ..\Query file

Где AC_XXXXXX.abc является индексом, связанным с конкретным индексным файлом. Все 6 индексных файлов вызывается с помощью ** AC_XXXXXX.abc *.

Моя проблема в том, что мне нужно использовать только первые 14 символов имен индексных файлов для окончательной операции.

Когда я использую приведенный ниже код, выравнивание не выполняется. for file in indexes/*; do ./tool $file|cut -b1-14 Project/query_file; done

Буду Вам благодарен за помощь!

+0

Если предположить, что '/ tool' в вашей выборке. строка, которая не выполнена, является инструментом обработки сигналов, похоже, что вы обрабатываете вывод запуска инструмента через 'cut ' - вы не сокращаете имя файла. –

+0

точно, я не редактирую имя файла, а вместо этого редактирую вывод. как я должен это исправить? – dawnoflife

ответ

2

Прежде всего, имейте в виду, что $ file всегда начинается с «indexes /», поэтому обрезка первых 14 символов всегда будет включать это имя папки в начале.

Чтобы использовать первые 14 символов в переменной, используйте ${file:0:14}, где 0 - индекс начальной строки, а 14 - длина требуемой подстроки.

В качестве альтернативы, если вы хотите использовать вырезать, вам нужно запустить его в субоболочке: for file in indexes/*; do ./tool $(echo $file|cut -c 1-14) Project/query_file; done Я изменил ARG для cut к -c для символов вместо байтов

+0

Спасибо, я использовал опцию '$ {file: 0: 14}', и я думаю, что это трюк! – dawnoflife

Смежные вопросы