3

Обычно grep ищет все строки, содержащие совпадение с указанным шаблоном / параметром.

Я хотел бы соответствовать только шаблону (то есть не всей линии).

Итак, если файл содержит строки:

We said that we'll come.
Unfortunately, we were delayed.
Now, we're on our way.
Didn't I say we'd come?

Я хочу найти все сокращения, начинающиеся с "мы" (регулярное выражение: we\'[a-z]+/i); Я ищу вывод:

we'll
we're
we'd

Как мне это сделать (с помощью grep или другого инструмента командной строки Unix/Windows)?

2 ответа2

3

Используйте опцию -o :

grep -E -i -o "we'[a-z]+" file.txt

Обратите внимание, что это не универсально переносимо для всех реализаций grep .

0

Я бы предпочел Perl для чего-то вроде этого:

#!/usr/bin/perl

use strict;
use warnings;

open FH, "< parse.txt" or die $!;

while(<FH>)
{
    while($_ =~ /\b(we\'\w+)\b/g)
    {
        print $1."\n";
    }
}

close FH;

Введите текст:

Some text we're test we'll why we're.
More text we'll we're.
Test.

Выход:

we're
we'll
we're
we'll
we're

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .