У меня есть файл, где каждая строка имеет следующий формат:Извлечение строки из файла с определенными словами, используя партию
1yjo ASN 1 A GLN 3 B 8.85
я должен извлечь каждую строку, где второй маркер равно PHE
и пятых токен равен LEU
или наоборот. Например:
2beg LEU 17 A VAL 18 C 8.76
2beg LEU 17 A PHE 19 A 7.2
2beg PHE 19 A ALA 21 B 8.88
2beg PHE 19 D LEU 34 E 13.28
Если это был входной файл, мне пришлось бы извлечь вторую и четвертую строки. Было бы полезно извлечь их в отдельный файл.
Вот что я пытался до сих пор:
@echo off
set inputfile=a.dat
for /F "tokens=1,2,3,4,5,6,7,8" %%a in (%inputfile%) do (
if %%b == "LEU" and %%e == "PHE" do (
@echo %%b %%e
)
)
... но он просто копирует весь входной файл, то есть условие IF не имеет никакого эффекта ...
Редактировать : Я также пробовал:
...
if %%b == "LEU" (
if %%e == "PHE" (
@echo %%a %%b %%c %%d %%e %%f %%g %%h
)
)
...
... и он ничего не копирует.
Я также не уверен, если я могу использовать «и» и «или» оператор, или я должен сделать это с несколькими вложенными, если в ...
Как я могу это сделать?
Это не сохранит первоначальный интервал токенов. Это не составит труда исправить, но есть намного более простые и быстрые способы, чем FOR/F. – dbenham