Primeiro caso
perl -nle 'print $_."=".eval($_)' filewithexpressions
-
-nfaz um loop sobre as linhas. -
-lretira novas linhas de$_, mas separa linhas de saída com novas linhas para você. -
-edefine uma expressão a ser executada. -
$_é um marcador para "linha atual". -
.concatena strings. -
eval()pegará uma string e a avaliará como código, por exemplo,eval('5+8')retorna13.
Segundo caso
Com dois sinais de igual no arquivo, conforme observado em meu comentário à pergunta original:
perl -ne 'print eval($_)?" ":"!",$_' filewithequalities
Como antes, em geral.
-
-lnão é necessário / desejado desde que as novas linhas se cuidem neste caso. - A construção
?:é um operador ternário . Se a expressão anterior for verdadeira, retorne um espaço em branco, caso contrário, retorne um ponto de exclamação.