Desejo remover \includegraphics
dos .tex
arquivos para obter uma lista dos nomes dos arquivos, conforme ilustrado no exemplo a seguir. Eu quero remover x
e y
e obterI
something {\includegraphics[width=0.5\textwidth]{/tmp/myfile.pdf} somethingelse
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxIIIIIIIIIIIIIIIyyyyyyyyyyyyyyy
O exemplo a seguir não funciona com GNU sed 4.5. Como devo escapar das chaves corretamente, para que corresponda corretamente?
echo "something {\includegraphics[width=0.5\textwidth]{" | sed -e "s/^*.\\includegraphics\[*.\]\{//"
Não fuja do
{
ou}
. Fazer isso fariased
pensar que você está usando um operador de repetição de expressão regular (como\{1,4\}
para corresponder à expressão anterior entre uma e quatro vezes). Este é um operador de expressão regular básico, e o equivalente de expressão regular estendida é escrito sem as barras invertidas.Em uma expressão regular estendida (como usada com
sed -E
), você deseja escapar tanto{
e}
. Se você achar difícil lembrar quando usar o escape e quando não usar o escape desses caracteres, poderá sempre usar[{]
e[}]
combiná-los literalmente em expressões básicas e estendidas.Você também usa
*.
em dois lugares onde eu acho que você quer dizer.*
. Aliás, a*
no início de uma expressão regular (ou logo após^
no início) corresponderia a um caractere literal*
.Quanto ao
sed
comando real, eu provavelmente usaria o seguinte:Para excluir todas as linhas que não contêm nenhum comando, você pode adicionar um comando
\includegraphics
simples :d
Isso funcionaria no seu exemplo, mas não se
somethingelse
o final da linha contiver um{
caractere.