Necesito comentar una entrada en el archivo rc.tcpip dentro de /etc
# Inicie el demonio snmpmibd
start /usr/sbin/snmpmibd "$src_running"# Inicie el demonio del Protocolo simple de administración de red (SNMP)
start /usr/sbin/snmpd "$src_running"
¿Cómo comento estas líneas usando sed
?
Respuesta1
Para comentar líneas que comienzan con start /usr/sbin/snmpmibd
, use el s
comando con un patrón usando el ^
ancla y #
en el texto de reemplazo, más &
lo que representa el texto reemplazado. Puede hacer coincidir las dos líneas por separado o notar que snmpd
están snmpmibd
omitidas mib
(concisión a expensas de la claridad)¹ y usar snmp\(mib\)\{0,1\}d
. Dado que el patrón contiene una barra diagonal, utilice otro carácter como delimitador, como por ejemplo !
. Dado que sed
es un filtro, deberá escribir la salida en un archivo nuevo y luego mover el nuevo archivo a su lugar (redireccionar la salida sed
al mismo archivo que la entrada no funcionaría: primero borraría el archivo antiguo, luego comience a leer desde el archivo ahora vacío)².
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 un archivo en su lugar, puede usareden lugar de sed.
ed -s /etc/rc.tcpip <<'EOF'
g!^start /usr/sbin/snmpd ! s/^/#/
g!^start /usr/sbin/snmpmibd ! s/^/#/
w
q
EOF
¹ AIX no tiene \?
operadores \|
, solo inició BRE, por lo que \(snmpmibd\|snmpd\)
no funcionará.
² AIX sed no tiene -i
, esa es una extensión GNU.
Respuesta2
Gracias a Gilles por el comentario sobre AIX sed que no permite -i
para comentar líneas
sed 's/^[[:space:]]*[^#]/#&/' /etc/rc.tcpip > /tmp/rc.tcpip
cat /tmp/rc.tcpip /etc/rc.tcpip
rm /tmp/rc.tcpip
Se podría hacer un filtro en línea para seleccionar agregando /yourRegExFilterPattern/
antes de lo s
siguiente:
sed '/start/ s/^[[:space:]]*[^#]/#&/' /etc/rc.tcpip > /tmp/rc.tcpip
cat /tmp/rc.tcpip /etc/rc.tcpip
rm /tmp/rc.tcpip
o más eficiente pero menos legible en un filtro complejo (no es el caso aquí con un filtro simple start
)
sed 's/^[[:space:]]*start/#&/' /etc/rc.tcpip > /tmp/rc.tcpip
cat /tmp/rc.tcpip /etc/rc.tcpip
rm /tmp/rc.tcpip
para descomentar líneas (necesita el patrón de filtro directamente para evitar descomentar comentarios reales)
sed '/YourSelectionPattern/ s/^\(^[[:space:]]*\)#/\1/' /etc/rc.tcpip > /tmp/rc.tcpip
cat /tmp/rc.tcpip /etc/rc.tcpip
rm /tmp/rc.tcpip
Es posible que necesite derechos adicionales para modificar este archivo si no es root, por lo que a sudo
es la clave.
También recomiendo hacer una copia de seguridad de /etc/rc.tcpip
antes por si acaso.
Respuesta3
En /etc/rc.tcpip
, comente la snmpd
entrada ejecutando el comando:
chrctcp -d snmpd