下面是网上查找到的例子:
sed -i ':a;/^+/{s/.*/+ X/;n;n;s/.*/+ X/};n;ba' file.txt
按顺序解释如下:
名称 | 注释 |
---|---|
:a | 设置一个标签a |
/^+/ | 若匹配行首为+ |
s/.*/+ X/ | 替换当前行为+ X |
n;n; | 读入下一行;再读入下一行 |
s/.*/+ X/ | 再次替换当前行为+ X |
n; | 读入下一行 |
ba | 跳转到标签a,相当于goto语句,这样构成循环,直到文件处理结束 |
按照上面的方法自己的例程中应用:
sed -i '/^TFTP_DIRECTORY/{s#.*#TFTP_DIRECTORY="/opt/tftp"#}' /etc/default/tftpd-hpa
sed -i '/^TFTP_OPTIONS/{s#.*#TFTP_OPTIONS="-l -c -s"#}' /etc/default/tftpd-hpa
替换/etc/default/tftpd-hpd 中的两行:
cat /etc/default/tftpd-h
前:
#/etc/default/tftpd-hpa
TFTP_USERNAME=”tftp”
TFTP_DIRECTORY=”/var/tftproot”
TFTP_ADDRESS=”[::]:69”
TFTP_OPTIONS=”–section”
后:
#/etc/default/tftpd-hpa
TFTP_USERNAME=”tftp”
TFTP_DIRECTORY=”/opt/tftp”
TFTP_ADDRESS=”[::]:69”
TFTP_OPTIONS=”-l -c -s”