Preciso comentar uma entrada no arquivo rc.tcpip dentro de /etc
# Inicie o daemon snmpmibd
start /usr/sbin/snmpmibd "$src_running"# Inicie o daemon do Simple Network Management Protocol (SNMP)
start /usr/sbin/snmpd "$src_running"
Como faço para comentar essas linhas usando sed
?
Responder1
Para comentar linhas que começam com start /usr/sbin/snmpmibd
, use o s
comando com um padrão usando a ^
âncora e #
no texto de substituição, mais &
o que representa o texto substituído. Você pode combinar as duas linhas separadamente ou observar que snmpd
está snmpmibd
omitida mib
(concisão em detrimento da clareza)¹ e usar snmp\(mib\)\{0,1\}d
. Como o padrão contém uma barra, use outro caractere como delimitador, como !
. Como sed
é um filtro, você precisará gravar a saída em um novo arquivo e, em seguida, mover o novo arquivo para o lugar (redirecionar a saída sed
para o mesmo arquivo da entrada não funcionaria: primeiro apagaria o arquivo antigo, então comece a ler a partir do arquivo agora vazio)².
sed -e 's!^start /usr/sbin/snmpmibd !#&!' -e 's!^start /usr/sbin/snmpmibd !#&!' </etc/rc.tcpip >/etc/rc.tcpip.new
mv /etc/rc.tcpip.new /etc/rc.tcpip
Para editar um arquivo no local, você pode usarEdem vez de sed.
ed -s /etc/rc.tcpip <<'EOF'
g!^start /usr/sbin/snmpd ! s/^/#/
g!^start /usr/sbin/snmpmibd ! s/^/#/
w
q
EOF
¹ AIX não possui \?
operadores \|
, apenas iniciou o BRE, então \(snmpmibd\|snmpd\)
não funcionará.
² AIX sed não possui -i
, é uma extensão GNU.
Responder2
Obrigado a Gilles pela observação sobre o AIX sed não permitir -i
para comentar linhas
sed 's/^[[:space:]]*[^#]/#&/' /etc/rc.tcpip > /tmp/rc.tcpip
cat /tmp/rc.tcpip /etc/rc.tcpip
rm /tmp/rc.tcpip
um filtro on-line para selecionar pode ser feito adicionando /yourRegExFilterPattern/
antes do s
seguinte:
sed '/start/ s/^[[:space:]]*[^#]/#&/' /etc/rc.tcpip > /tmp/rc.tcpip
cat /tmp/rc.tcpip /etc/rc.tcpip
rm /tmp/rc.tcpip
ou, mais eficiente, mas menos legível em filtros complexos (não é o caso aqui com um filtro simples start
)
sed 's/^[[:space:]]*start/#&/' /etc/rc.tcpip > /tmp/rc.tcpip
cat /tmp/rc.tcpip /etc/rc.tcpip
rm /tmp/rc.tcpip
para descomentar linhas (é necessário o padrão de filtro direto para evitar descomentar comentários reais)
sed '/YourSelectionPattern/ s/^\(^[[:space:]]*\)#/\1/' /etc/rc.tcpip > /tmp/rc.tcpip
cat /tmp/rc.tcpip /etc/rc.tcpip
rm /tmp/rc.tcpip
Você pode precisar de direitos extras para modificar este arquivo se não for root, então a sudo
é a chave.
Eu também recomendo fazer uma cópia de backup de /etc/rc.tcpip
antes, para garantir.
Responder3
Em /etc/rc.tcpip
, comente a snmpd
entrada executando o comando:
chrctcp -d snmpd