Выходя из комментария, и предполагая, что вы передали входные данные из канала или иным образом на STDIN
:
perl -e 'my $re=shift;$re=~qr{$re};while(<STDIN>){if(/($re)/g){print"$1\n"}while(m/\G.*?($re)/g){print"$1\n"}}'
Использование:
cat SOME_TEXT_FILE | perl -e 'my $re=shift;$re=~qr{$re};while(<STDIN>){if(/($re)/g){print"$1\n"}while(m/\G.*?($re)/g){print"$1\n"}}' 'YOUR_REGEX'
или я бы просто добавил весь этот беспорядок в функцию bash ...
bggrep ()
{
if [ "x$1" != "x" ]; then
perl -e 'my $re=shift;$re=~qr{$re};while(<STDIN>){if(/($re)/g){print"$1\n"}while(m/\G.*?($re)/g){print"$1\n"}}' $1;
else
echo "Usage: bggrep <regex>";
fi
}
Использование такое же, только выглядит чище:
cat SOME_TEXT_FILE | bggrep 'YOUR_REGEX'
(или просто введите саму команду и введите текст для построчного соответствия, но это не представляется вероятным вариантом использования).
Пример (из вашего комментария):
bash$ cat garbage
fod,food,fad
bar
fooooooood
bash$ cat garbage | perl -e 'my $re=shift;$re=~qr{$re};while(<STDIN>){if(/($re)/g){print"$1\n"}while(m/\G.*?($re)/g){print"$1\n"}}' 'fo*d'
fod
food
fooooooood
или ...
bash$ cat garbage | bggrep 'fo*d'
fod
food
fooooooood