Как добавить имя .sdf файла к содержащимся в нём веществам?
Как добавить имя .sdf файла к содержащимся в нём веществам?
Затрудняюсь с выбором правильного подраздела форума для этого вопроса, спрошу здесь.
Есть директория, в ней около 1000 .sdf файлов (содержат вещества, их ID номера и т.д.). Как бы к каждому веществу добавить поле с именем содержащего его .sdf файла и как бы эту процедуру сделать для всех этих файлов? Можно ли сделать такое в ISIS base?
Есть директория, в ней около 1000 .sdf файлов (содержат вещества, их ID номера и т.д.). Как бы к каждому веществу добавить поле с именем содержащего его .sdf файла и как бы эту процедуру сделать для всех этих файлов? Можно ли сделать такое в ISIS base?
-
Marxist
Сделать скрипт несложно. В обменнике - архив с таким перл-скриптом, а также файлы, необходимые для его выполнения под виндой (на случай, если перл не стоит, в *nix перл и так должен быть). Запускать из консолиpalek писал(а):Насчёт скрипта - не силён.
Код: Выделить всё
perl add_filename.pl *.sdfКстати, если из 1-й строки этого скрипта убрать -i.bak и вызывать его как
Код: Выделить всё
perl add_filename.pl *.sdf > all.sdf-
Marxist
ИСН писал(а):Правда, тот бы сам вышел размером с пол-мега, и к тому же скрыл бы от народа красоту и простоту перловского исходнега.
Код: Выделить всё
#!perl -i.bak -p
$n = $1 if />\s+(\d+)/;
s/^(\${4})/> $n <FILENAME>\n$ARGV\n\n$1/;Простоту?
-
Marxist
Эту задачу можно решить возможностями только ISIBASE так:palek писал(а):Насчёт скрипта - не силён.
Насчёт зачем это надо - собираюсь слить все .sdf файлы в один большой файл и нужно потом знать, из какого файла пришло то или иное вещество.
1. Создаете новую БД с полями, которые есть в SDF-файлах, заполняете форму.
2. Импортируете первый файл, полученную выборку сохраняете как список, присвоив ему имя того файла, из которого импортировали.
3. Импортируете второй файл, полученную выборку (будет состоять только из струтур 2-го файла) также сохраняете как как список, присвоив ему имя того файла, из которого импортировали (второго).
и т.д. до последнего файла. В результате Вы получите БД со всеми структурами из всех SDF-файлов, которая будет разбита на списки с названиями исходных SDF-файлов.
I D E A = A u
Увы... так получается очень много однотипной ручной работы. Файлов то порядка 1000! Я считаю, что лучше потратить день но написать таки скрипт, который за минуту выполнит дневную работу.Эту задачу можно решить возможностями только ISIBASE так:
1. Создаете новую БД с полями, которые есть в SDF-файлах, заполняете форму.
2. Импортируете первый файл, полученную выборку сохраняете как список, присвоив ему имя того файла, из которого импортировали.
3. Импортируете второй файл, полученную выборку (будет состоять только из струтур 2-го файла) также сохраняете как как список, присвоив ему имя того файла, из которого импортировали (второго).
и т.д. до последнего файла. В результате Вы получите БД со всеми структурами из всех SDF-файлов, которая будет разбита на списки с названиями исходных SDF-файлов
Скрипт запускали из FARа, попробую теперь из командной строки.
palek, в фаре командная строка та же самая, не игрушечная.
amge, мобыть я чего-то не понимаю, но как cmd должен врубиться, что *.sdf - не тупо параметр для скрипта (мало ли чем он питается, этот скрипт), а нечто, что надо развернуть по wildcards и пройтись по всем файлам? Он ему его так и отдаёт, сырым.
amge, мобыть я чего-то не понимаю, но как cmd должен врубиться, что *.sdf - не тупо параметр для скрипта (мало ли чем он питается, этот скрипт), а нечто, что надо развернуть по wildcards и пройтись по всем файлам? Он ему его так и отдаёт, сырым.
Любой шелл, и cmd в том числе, сначала раскрывает wildcards, затем передает команде то что получилось. А чтобы строку со звездочкой передать команде как есть, звездочку нужно заэкранировать или взять в кавычки.ИСН писал(а):amge, мобыть я чего-то не понимаю, но как cmd должен врубиться, что *.sdf - не тупо параметр для скрипта (мало ли чем он питается, этот скрипт), а нечто, что надо развернуть по wildcards и пройтись по всем файлам? Он ему его так и отдаёт, сырым.
Сейчас попробовал, у меня cmd звездочку раскрывает. Может, проблема в том, что очень много файлов (после раскрытия звездочки) просто не помещаются в командную строку в винда так своеобразно ругается на это? palek, попробуй на небольшом количестве файлов.
Вот хрен там.amge писал(а):Любой шелл, и cmd в том числе, сначала раскрывает wildcards, затем передает команде то что получилось.
То есть я хочу сказать - у меня, например, ни разу не так. Передаёт сырым как есть.
Пишу:
Код: Выделить всё
print "$_\n" foreach @ARGV;Теперь:
Код: Выделить всё
где-то-там>perl printarg.pl e1_1.txt e1_2.txt e1_3.txt
e1_1.txt
e1_2.txt
e1_3.txt
где-то-там>perl printarg.pl *.txt
*.txtКто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 20 гостей