Se você não precisa fazer isso em sed
, o Perl pode ajudar. Ele armazena o nome do arquivo que está lendo na variável especial $ARGV
e o número da linha na variável especial $.
, portanto, isso deve funcionar:
...
for i in $(cat $inlist/list.txt); do
perl -nle 'print "$ARGV ($_)" and last if ($.==2)' "${in}/${i}/${g}"
done
Para pegar várias linhas:
...
for i in $(cat $inlist/list.txt); do
perl -nle '
BEGIN{
@lines = (2,3,5);
print "$ARGV: "
}
print "Line $.: $_" if grep { $. == $_ } @lines;
last if $. == $lines[-1];
' "${in}/${i}/${g}"
done
O texto acima imprimirá as linhas 2, 3 e 5. Isso pressupõe que a última entrada na matriz @lines
seja a última linha que você deseja imprimir.