Estou usando o sed para encontrar e substituir certas strings:
Caso 1. Um valor no arquivo é sempre constante. E eu quero substituir o parâmetro de falso para verdadeiro. Então eu uso este comando:
sed -i -e 's/entry key="ignore_vc_cert" value="false"/entry key="ignore_vc_cert" value="true"/g' /usr/local/avamar/var/mc/server_data/prefs/mcserver.xml
Isso localizará ignore_vc_cert
e alterará seu valor de false
para true
.
Funciona bem.
Em seguida, tenho outro arquivo que possui o seguinte parâmetro:
<numberOfDisk>4</numberOfDisk>
Agora, esse valor aqui pode mudar dependendo da implantação. Quero substituir o número aqui, 4
ou o que for com a saída de df -h | grep data0* | wc -l
Portanto, se a saída de df -h | grep data0* | wc -l
for 3
, ela deverá substituir o valor de numberOfDisk
Parâmetro de 4
a 3
Eu escrevi este comando:
sed -e s/"$(cat /usr/local/vdr/etc/vdr-configuration.xml | grep -i numberOfDisk)"/<numberOfDisk>"$(df -h | grep data0* | wc -l)"</numberOfDisk>/g > /usr/local/vdr/etc/vdr-configuration.xml
Mas, por algum motivo, recebo numberOfDisk: No such file or directory
Se eu fizer:
sed -e 's/"$(cat /usr/local/vdr/etc/vdr-configuration.xml | grep -i numberofdisk)"/<numberOfDisk>"$(df -h | grep data0* | wc -l)"</numberOfDisk>/g' /usr/local/vdr/etc/vdr-configuration.xml
Então eu recebo: sed: -e expression #1, char 15: unknown option to
s ''
Quaisquer informações sobre como eu poderia consertar isso?