Ich muss einen Eintrag in der Datei rc.tcpip in /etc auskommentieren
# Starten Sie den snmpmibd-Daemon
start /usr/sbin/snmpmibd "$src_running"# Starten Sie den Simple Network Management Protocol (SNMP)-Daemon
start /usr/sbin/snmpd "$src_running"
Wie kommentiere ich diese Zeilen mit sed
?
Antwort1
Um Zeilen, die mit beginnen, auszukommentieren start /usr/sbin/snmpmibd
, verwenden Sie den s
Befehl mit einem Muster, das den ^
Anker und #
im Ersetzungstext verwendet, plus , &
das für den ersetzten Text steht. Sie können die beiden Zeilen entweder separat abgleichen oder beachten, dass mit ausgelassen snmpd
wurde (Prägnanz auf Kosten der Klarheit)¹ und verwenden . Da das Muster einen Schrägstrich enthält, verwenden Sie ein anderes Zeichen als Trennzeichen, z. B. . Da es sich bei um einen Filter handelt, müssen Sie die Ausgabe in eine neue Datei schreiben und dann die neue Datei an ihren Platz verschieben (das Umleiten der Ausgabe von in dieselbe Datei wie die Eingabe würde nicht funktionieren: Es würde zuerst die alte Datei löschen und dann mit dem Lesen aus der nun leeren Datei beginnen)².snmpmibd
mib
snmp\(mib\)\{0,1\}d
!
sed
sed
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
Um eine Datei direkt zu bearbeiten, können Sie verwendenEd.anstelle von sed.
ed -s /etc/rc.tcpip <<'EOF'
g!^start /usr/sbin/snmpd ! s/^/#/
g!^start /usr/sbin/snmpmibd ! s/^/#/
w
q
EOF
¹ AIX hat keine \?
oder \|
-Operatoren, hat nur BRE gestartet, \(snmpmibd\|snmpd\)
funktioniert also nicht.
² AIX sed hat kein -i
, das ist eine GNU-Erweiterung.
Antwort2
Vielen Dank an Gilles für den Hinweis, dass AIX sed -i nicht zulässt.
zu Kommentarzeilen
sed 's/^[[:space:]]*[^#]/#&/' /etc/rc.tcpip > /tmp/rc.tcpip
cat /tmp/rc.tcpip /etc/rc.tcpip
rm /tmp/rc.tcpip
Zur Auswahl könnte ein Online-Filter erstellt werden, indem man /yourRegExFilterPattern/
davor s
Folgendes hinzufügt:
sed '/start/ s/^[[:space:]]*[^#]/#&/' /etc/rc.tcpip > /tmp/rc.tcpip
cat /tmp/rc.tcpip /etc/rc.tcpip
rm /tmp/rc.tcpip
oder, effizienter, aber weniger lesbar bei komplexen Filtern (was hier bei einem einfachen nicht der Fall ist start
)
sed 's/^[[:space:]]*start/#&/' /etc/rc.tcpip > /tmp/rc.tcpip
cat /tmp/rc.tcpip /etc/rc.tcpip
rm /tmp/rc.tcpip
um Zeilen zu kommentieren (benötigt das Filter-Direktmuster, um das Kommentieren echter Kommentare zu vermeiden)
sed '/YourSelectionPattern/ s/^\(^[[:space:]]*\)#/\1/' /etc/rc.tcpip > /tmp/rc.tcpip
cat /tmp/rc.tcpip /etc/rc.tcpip
rm /tmp/rc.tcpip
Wenn Sie kein Root-Benutzer sind, benötigen Sie möglicherweise zusätzliche Rechte zum Ändern dieser Datei. sudo
Der Schlüssel ist daher „a“.
/etc/rc.tcpip
Ich empfehle außerdem , vorsichtshalber eine Sicherungskopie von „vorher“ zu erstellen .
Antwort3
/etc/rc.tcpip
Kommentieren Sie in den Eintrag aus, indem Sie den snmpd
folgenden Befehl ausführen:
chrctcp -d snmpd