Pelo som, você simplesmente quer encontrar todo o conteúdo em arquivos que ocorre entre essas duas sequências de marcadores:
<List Variable name="lookups">
...
...
</Variable>
Para fazer isso, você pode usar este comando sed :
$ sed '/<List Variable name="lookups">/,/<\/Variable>/!d;//d' file.dat
<Value>
<Value name="lookups" value="LSM_OPT"/>
<OTHER GARBAGE... >
<Value name="lookup_name" value="123_Done"/>
<OTHER GARBAGE... >
<Value name="lookup_name" value="XYZ_DONE"/>
<OTHER GARBAGE... >
Isto imprime todas as linhas entre elas, mas omite as duas linhas marcadoras.
Como funciona
O texto acima procura uma linha que corresponda ao seu padrão inicial, <List Variable name="lookups"> seguida por todas as linhas até encontrar a segunda linha correspondente, <\/Variable> . Para linhas entre elas, sed não as excluirá, !d . Para todas as outras linhas, o d in !d as excluirá. O segundo //d apaga as linhas do marcador.
Se você gostaria de fazer o acima, e também imprimir as linhas do marcador, você pode alterar o comando sed acima para isso:
$ sed '/<List Variable name="lookups">/,/<\/Variable>/!d' file.dat
<List Variable name="lookups">
<Value>
<Value name="lookups" value="LSM_OPT"/>
<OTHER GARBAGE... >
<Value name="lookup_name" value="123_Done"/>
<OTHER GARBAGE... >
<Value name="lookup_name" value="XYZ_DONE"/>
<OTHER GARBAGE... >
</Variable>