我需要註解掉 /etc 內 rc.tcpip 檔案中的一個條目
# 啟動 snmpmibd 守護程式
start /usr/sbin/snmpmibd "$src_running"# 啟動簡單網路管理協定 (SNMP) 守護程式
start /usr/sbin/snmpd "$src_running"
我如何使用評論這些行sed
?
答案1
若要註解掉以 開頭的行start /usr/sbin/snmpmibd
,請在取代文字中使用帶有錨點和s
模式的指令,其中 plus 代表已取代的文字。您可以分別匹配這兩行,或者註意省略(以犧牲清晰度為代價的簡潔)並使用。由於模式包含斜杠,因此請使用另一個字元作為分隔符,例如。由於是一個過濾器,您需要將輸出寫入一個新文件,然後將新文件移動到位(將輸出重定向到與輸入相同的文件是行不通的:它會首先刪除舊文件,然後開始從現在為空的文件中讀取)²。^
#
&
snmpd
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
要就地編輯文件,您可以使用編輯而不是 sed。
ed -s /etc/rc.tcpip <<'EOF'
g!^start /usr/sbin/snmpd ! s/^/#/
g!^start /usr/sbin/snmpmibd ! s/^/#/
w
q
EOF
¹ AIX 沒有\?
or\|
運算符,只啟動了 BRE,所以\(snmpmibd\|snmpd\)
不行。
² AIX sed 沒有-i
,這是 GNU 擴充。
答案2
感謝 Gilles 對 AIX sed 不允許 -i 的評論
註解行
sed 's/^[[:space:]]*[^#]/#&/' /etc/rc.tcpip > /tmp/rc.tcpip
cat /tmp/rc.tcpip /etc/rc.tcpip
rm /tmp/rc.tcpip
可以/yourRegExFilterPattern/
在先前新增要選擇的線上篩選器s
:
sed '/start/ s/^[[:space:]]*[^#]/#&/' /etc/rc.tcpip > /tmp/rc.tcpip
cat /tmp/rc.tcpip /etc/rc.tcpip
rm /tmp/rc.tcpip
或者,在複雜的過濾器上更有效但可讀性較差(這裡的簡單過濾器不是這種情況start
)
sed 's/^[[:space:]]*start/#&/' /etc/rc.tcpip > /tmp/rc.tcpip
cat /tmp/rc.tcpip /etc/rc.tcpip
rm /tmp/rc.tcpip
取消註解行(需要直接過濾模式以避免取消註解真實註解)
sed '/YourSelectionPattern/ s/^\(^[[:space:]]*\)#/\1/' /etc/rc.tcpip > /tmp/rc.tcpip
cat /tmp/rc.tcpip /etc/rc.tcpip
rm /tmp/rc.tcpip
如果您不是 root,您可能需要額外的權限才能修改此文件,因此 asudo
是關鍵。
我還建議製作之前的備份副本,/etc/rc.tcpip
以防萬一。
答案3
在 中,透過執行命令/etc/rc.tcpip
註解掉該條目:snmpd
chrctcp -d snmpd