Parece que X-Spam-Status
line é um cabeçalho "continuado" RFC822 que abrange várias linhas.
Um cabeçalho começa com espaços não brancos no primeiro caractere de uma linha. Uma linha não vazia com espaço em branco no início é uma continuação da linha anterior e uma linha em branco termina os cabeçalhos.
Se você quiser filtrar um cabeçalho específico, precisará de algo mais com RFC822 do que grep
. Talvez uma coisa perl
ou awk
.
Você pode até fazer algo sobre isso
while read line
do
echo "$line" >> $infile
done < "${1:-/dev/stdin}"
como se não ecoasse uma linha que começa com X-Spam-Status
(e defina um sinalizador), pule as linhas "continuadas" até que você acerte um novo cabeçalho (e limpe o sinalizador).
De qualquer forma, é necessária a conscientização do programa sobre como os cabeçalhos RFC822 são formatados.
Talvez você precise se perguntar se realmente se importa com esse cabeçalho em sua impressão
Ainda assim, um filtro não é tão difícil
#!/user/bin/perl
my $skip=0;
# First do the headers
while(<STDIN>)
{
#Test for end of headers
if(/^\s*$/)
{
#copy the header ending blank
printf $_;
#exit the while loop
last;
}
#Starts with non whitespace, new header
$skip = 0 if /^\S/;
#skip stuff if its the header we don't want
$skip = 1 if /^X-Spam-Status/i;
#copy lines if we're not skipping
print $_ if !$skip;
}
# now the rest of the file
while(<STDIN>)
{
#copy lines
print $_;
}