Si bien el bashaspecto se ha cubierto, su pregunta me hace pensar que ha encontrado esas variables en el perlcódigo.
$&y $_son variables especiales en perl. Y se encuentran especialmente en el perlcódigo llamado desde el código de shell.
$_es la variable predeterminada en la perlque trabajan muchas funciones y operadores. Esa variable también es la variable predeterminada establecida por los operadores de entrada.
En:
perl -pe 'some-code' < some-input
Se ejecuta algún código para cada línea de alguna entrada, con la línea almacenada $_y el contenido del $_se imprime después de que se haya ejecutado algún código.
El s/regex/replacement/operador trabaja $_de manera predeterminada. Entonces a menudo encuentras cosas como:
perl -pe 's/foo/bar/'
Que es la abreviatura de:
perl -pe '$_ =~ s/foo/bar/'
(arriba, $_en lo que respecta al shell es solo parte de un argumento literal pasado al perlintérprete, no es una variable de shell. Ese argumento literal se pasa como perlexpresión ( -e) a perl, y es por perleso que se interpreta como un variable).
$&es otra perlvariable especial que se expande a lo que coincida con el último operador coincidente ( m/.../, s/.../.../...).
Por ejemplo:
$ echo foo | perl -lne '
print "The last character in $_ is $&" if m/.$/'
The last character in foo is o
O:
$ echo foo bar | perl -pe 's/[aeiou]+/<$&>/g'
f<oo> b<a>r