Use a opção -o
:
grep -E -i -o "we'[a-z]+" file.txt
Observe que isso não é universalmente portável para todas as implementações de grep
.
Normalmente, grep procura por todas as linhas que contêm uma correspondência para o padrão / parâmetro I especifique.
Gostaria de corresponder apenas ao padrão (ou seja, não à linha inteira).
Então, se um arquivo contiver as linhas:
We said that we'll come.
Unfortunately, we were delayed.
Now, we're on our way.
Didn't I say we'd come?
Eu quero encontrar todas as contrações começando com "we" (padrão regex: we\'[a-z]+/i
); Estou procurando a saída:
we'll
we're
we'd
Como faço isso (com grep ou outra ferramenta de linha de comando Unix / Windows)?
Eu prefiro o Perl para algo assim:
#!/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;
texto de entrada:
Some text we're test we'll why we're.
More text we'll we're.
Test.
Saída:
we're
we'll
we're
we'll
we're