Eu tenho o seguinte código gerado em um Makefile:
${SED} -i "" -e "s|(DESTDIR)|${DESTDIR}|g" $(pcfiles)
# ${SED} -i "s|(DESTDIR)|${DESTDIR}|g" $(pcfiles)
Com o qual quero substituir
# ${SED} -i "" -e "s|(DESTDIR)|${DESTDIR}|g" $(pcfiles)
${SED} -i "s|(DESTDIR)|${DESTDIR}|g" $(pcfiles)
Portanto, é simplesmente uma questão de comentar uma linha e substituir pela outra.
Mas, devido às aspas simples e duplas, não consigo.
Se algum especialista em regex estiver disposto a levar 1-2 minutos para me ajudar isso será ótimo.
Eu estou puxando meus cabelos aqui.
obrigado
Respostas:
1 para resposta № 1# Comment out 1st line.
sed -E "s`([[:space:]]*${SED} -i """""" -e "s|(DESTDIR)|${DESTDIR}|g" $(pcfiles))`#1`" Makefile
# Uncomment 2nd line.
sed -E "s`#([[:space:]]+${SED} -i "s|(DESTDIR)|${DESTDIR}|g" $(pcfiles))`1`" Makefile
o sed
Os comandos estão em strings de aspas simples, que geralmente são mais fáceis de usar (você não precisa se preocupar com o shell expandindo sua string).
O aspecto complicado do primeiro comando é queaspas simples não podem ser incluídas em uma cadeia de caracteres entre aspas simples (nem mesmo escapar é uma opção); portanto, o comando é simplesmente dividido em duas cadeias de aspas simples com """"
- totalizando ""
- emendado.
O outro aspecto complicado é obter o escape de todos os caracteres especiais de regex. direita.