Извлечение имени файла и строки из нескольких файлов

Не похоже, что fetchmail поддерживает TLS на сервере SMTP. Обычно это не является проблемой, так как обычно он доставляет электронную почту локально.

Вы можете обойти эту проблему, доставив письмо на локальный SMTP-сервер и попросив его обработать доставку. Если Вам не нужен или Вам не нужен сервер с полным обслуживанием, например, exim4 или postfix, Вы можете использовать лёгкое реле, например, esmtp или 'msmtp' для доставки почты.


1
29.09.2014, 15:57
2 ответа

При работе с несколькими файлами, grep печатает каждое имя файла до совпадения. Так как вам не нужно искать регулярное выражение, вы можете использовать опцию -F для поиска фиксированной строки (что немного ускорит процесс); опция -r указывает grep на рекурсивное действие. Опция -r взята из версии GNU grep, поэтому она не будет работать на системах с другими версиями grep.

grep -r -F 'Taxonomy' /path/to/directory

В результате вы получите такие строки как:

sequence.php?ID=gi|90022703|ref|YP_528530.1|:Taxonomy: Bacteria; Proteobacteria; Gammaproteobacteria; Alteromonadales; Alteromonadaceae; Saccharophagus

Есть несколько способов массировать это в нужный вам вывод; одним из них будет использование cut:

grep -r -F 'Taxonomy' /path/to/directory | cut -d = -f 2 | cut -d : -f 1,3

Это должно превратить эту строку в:

gi|90022703|ref|YP_528530.1|: Bacteria; Proteobacteria; Gammaproteobacteria; Alteromonadales; Alteromonadaceae; Saccharophagus

Это не точное совпадение с тем, что вы описали; вы можете поместить | tr -d : на конец трубки, если вы действительно хотите избавиться от двоеточия. Наконец, чтобы перенаправить вывод в файл:

grep -r -F 'Taxonomy' /path/to/directory | cut -d = -f 2 | cut -d : -f 1,3 > file.txt

Если вы хотите добавить вывод в файл, а не перезаписать его, используйте >> вместо >.

2
27.01.2020, 23:38
awk '/^Taxonomy:/{t=FILENAME; sub(/^.*\?ID=/, x, t); $1=t; print; close(FILENAME)}' /files/location/* > output.txt
0
27.01.2020, 23:38

Теги

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