Как извлечь ключевые слова, содержащие строку, из файла Excel?

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

См. документацию:

Postfix needs to lookup if the recipient domains exist. Otherwise, Postfix will reject your DBMail recipients with a “User unknown in local recipient table” error.

To do this, you need to enable the MySQL- or PGSQL-module in Postfix and add

virtual_mailbox_domains = mysql:/etc/postfix/sql-virtual_mailbox_domains.cf

After that create the file and add the following MySQL-statements (adjust it to your needs if you use Postgres):

user     = <SQL-username> 
password = <SQL-password> 
hosts    = <SQL-host> 
dbname   = <SQL-database> 
query    = SELECT DISTINCT 1 FROM dbmail_aliases WHERE
SUBSTRING_INDEX(alias, '@', -1) = '%s';

Подведение итогов:

1)Создать файл:

nano /etc/postfix/sql-virtual_mailbox_domains.cf

2)Добавить в этот файл инструкции MySQL -выше

3)Удалить операторы MySQL -из /etc/postfix/main.cf

4)Добавить в /etc/postfix/main.cf параметр и сохранить изменения:

virtual_mailbox_domains = mysql:/etc/postfix/sql-virtual_mailbox_domains.cf

5)Перезагрузить конфигурацию или перезапустить Postfix:

service postfix reload

service postfix restart
0
19.11.2019, 13:05
2 ответа

Я думаю, что ваши требования требуют повторения ключевых слов. Я бы порекомендовал следующий сценарий оболочки -(, хотя вы можете вместить его в один -лайнер, если хотите):

#!/bin/bash

while read keyword
do
    # Apply grep, but store result in variable
    MATCH="$(grep $keyword genome.xls)"

    # If grep result is an empty string, output an empty line,
    # otherwise the grep result as-is.
    if [[ -z "$MATCH" ]]
    then
        echo
    else
        echo "$MATCH"
    fi
done < id.txt

Зациклив содержимое id.txt, вы можете обеспечить упорядоченность вывода.

Вызов сценария с помощью

user@host$./extract_lines.sh > result.xml

Чтобы сделать скрипт более гибким, мы можем сделать обрабатываемый файл аргументом строки команды -или даже списком аргументов строки команды -:

#!/bin/bash

if [[ "$#" == "0" ]]
then
    echo "Usage: $0 <filename(s)>"
    exit 1
fi


for file in "$@"
do
    outfile=${file/.xls/_result.xls}
    :>$outfile

    echo "Process $file, write results to $outfile"


    while read keyword
    do
    # Apply grep, but store result in variable
    MATCH="$(grep $keyword $file)"

    # If grep result is an empty string, output an empty line,
    # otherwise the grep result as-is.
    if [[ -z "$MATCH" ]]
    then
            echo "" >> $outfile
    else
            echo "$MATCH" >> $outfile
    fi
    done < id.txt
done

Это зациклит все файлы, указанные как аргументы строки команды -(и будь то *.xls), и запишет результаты в <input_filename>_result.xls.

Обратите внимание , однако, что этот синтаксис является несколько рудиментарным в том смысле, что вы не должны смешивать спецификации имени файла с "globs" (, т. е. подстановочными знаками, такими как *), и обычными именами файлов в вашем списке аргументов.

0
28.01.2020, 02:38

Попробуйте это,

while read a ; do grep "$a" genome.xls || printf "\n" ; done < id.txt 

NC_0208.1   18839   86123   prot4_A0A0          1   79  137
NC_0208.4   29761   74985   lip10_H8FLU5        2   393 48

NC_0208.2   29687   67745   lysin6_A0A0Q5       5   38  49 
NC_0208.1   18918   94692   amyl4_A0A0H         1   54  194
1
28.01.2020, 02:38

Теги

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