sed / awk / grep, чтобы удалить все, кроме соответствующего шаблона в текстовом файле - PullRequest
1 голос
/ 07 января 2011

привет, у меня есть файл let pattern.txt

содержит

pattern1

pattern2

pattern3

pattern4

другой текстовый файл let (complex.txt)

содержит строки в виде

путь: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, 'pattern1 / 2/3/4') XXXXXXXXXXXX

путь: XXXXXXXXXXXXXXXXXXXXXXXXXX (XXXXXXXXX, 'pattern1 / 2/3/4') XXXXXXXXXXX

путь: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX * *::: Мне нужно получить другой файл filter.txt, сопоставив pattern.txt с complex.txt, который будет содержать строку в виде

path: pattern1 / 2/3/4 .....

я пытался ... но я не получаю ....

может кто-нибудь помочь .... спасибо в adv ...

1 Ответ

2 голосов
/ 07 января 2011

Какой тип регулярного выражения (Basic, extended, perl?) Содержится в pattern.txt?

Если расширено, просто используйте awk:

awk '
    FNR==NR{
        patterns[$0]++; 
        next;
    } 
    {
        for (el in patterns) 
            if (match($0,el)) {
                print $1 substr($0,RSTART,RLENGTH); 
                next;
            } 
    }' pattern.txt complex.txt >filter.txt

Приведенный выше код опирается на пробел между «path:» и остальной частью строки в complex.txt.

...