Аудио компакт-диски, компакт-диски с данными и DVD-диски не распознаются

Использование awk или gawk

awk '/@<TRIPOS>BOND/,/@/ {getline; if ($_ ~ /^@/) {printf "%s:%s\n",$_,FILENAME; system ("mv \""FILENAME"\" <bad_files>/$(basename \""FILENAME"\")")} exit}' <file_name>

Пояснение

/@<TRIPOS>BOND/,/@/ Нам нужен только блок между @<TRIPOS>BOND и следующая строка, начиная с @ getline Прочитать следующую строку после @<TRIPOS>BOND if ($_ ~ /^@/) Проверить, если строка начинается с @ true Печать сообщения
printf "%s:%s\n",$_,FILENAME
Переместить файл
system ("mv \""FILENAME"\" <bad_files>/$(basename \""FILENAME"\")")
false Оставьте скрипт
exit

Пояснение

$ cat foo
@<TRIPOS>ATOM
  2 H18 65.2220 Du 1 RES1 0.0000
@<TRIPOS>BOND
@<TRIPOS>SUBSTRUCTURE

$ cat bar
@<TRIPOS>ATOM
  2 H18 65.2220 Du 1 RES1 0.0000
@<TRIPOS>BOND
 1  3  5  ar
@<TRIPOS>SUBSTRUCTURE

$ awk '/@<TRIPOS>BOND/,/@/ {getline; if ($_ ~ /^@/) {printf "%s:%s\n",$_,FILENAME; system ("mv \""FILENAME"\" \""FILENAME"\"_moved")} exit}' foo
@<TRIPOS>SUBSTRUCTURE:foo

$ awk '/@<TRIPOS>BOND/,/@/ {getline; if ($_ ~ /^@/) {printf "%s:%s\n",$_,FILENAME; system ("mv \""FILENAME"\" \""FILENAME"\"_moved")} exit}' bar

$ cat foo_moved 
@<TRIPOS>ATOM
  2 H18 65.2220 Du 1 RES1 0.0000
@<TRIPOS>BOND
@<TRIPOS>SUBSTRUCTURE

$ cat bar_moved
cat: bar_moved: No such file or directory
1
задан 9 February 2017 в 21:08

0 ответов

Другие вопросы по тегам:

Похожие вопросы: