以下两个sed替换怎么理解?
sed-i.ori's#192.168.1#172.16.1#g;22d;23d'/etc/cobbler/dhcp.templatesed-ri"/default_pa...
sed -i.ori 's#192.168.1#172.16.1#g;22d;23d' /etc/cobbler/dhcp.template
sed -ri "/default_password_crypted/s#(.*: ).*#\1\"`openssl passwd -1 -salt 'oldboy' '123456'`\"#" /etc/cobbler/settings
以上两个替换怎么理解? 展开
sed -ri "/default_password_crypted/s#(.*: ).*#\1\"`openssl passwd -1 -salt 'oldboy' '123456'`\"#" /etc/cobbler/settings
以上两个替换怎么理解? 展开
展开全部
首先 sed 使用 -i 选项后 会导致输入的文件被修改。
而第一个sed 后面 -i.ori 应该是笔误吧。
我的理解是:
第一个sed命令:
把文件 /etc/cobbler/dhcp.template 中的所有 192.168.1 替换为 172.16.1,然后删除第22行和第23行。
第二个sed命令,我拆开解释:
/default_password_crypted/
在文件 /etc/cobbler/settings 中,查找包含字符串“default_password_crypted”的行
s#(.*: ).*#\1\"`openssl passwd -1 -salt 'oldboy' '123456'`\"#"
如果找到,就将此行【最后一个冒号,以及紧跟此冒号的一个空格符】之后的内容替换为 "$1$oldboy$Npg9Pt9k98Mlg0ZeqHAuN1"
此处:$1$oldboy$Npg9Pt9k98Mlg0ZeqHAuN1 是子进程 openssl passwd -1 -salt 'oldboy' '123456' 执行后返回的字符串
注意:这里 使用 # 充当 sed 分隔符—— 's#aaa#bbb#' 等效于 's/aaa/bbb/'
括号:保存匹配的字符串以便后向引用
\1:后向引用第一个括号内的的字符串
而第一个sed 后面 -i.ori 应该是笔误吧。
我的理解是:
第一个sed命令:
把文件 /etc/cobbler/dhcp.template 中的所有 192.168.1 替换为 172.16.1,然后删除第22行和第23行。
第二个sed命令,我拆开解释:
/default_password_crypted/
在文件 /etc/cobbler/settings 中,查找包含字符串“default_password_crypted”的行
s#(.*: ).*#\1\"`openssl passwd -1 -salt 'oldboy' '123456'`\"#"
如果找到,就将此行【最后一个冒号,以及紧跟此冒号的一个空格符】之后的内容替换为 "$1$oldboy$Npg9Pt9k98Mlg0ZeqHAuN1"
此处:$1$oldboy$Npg9Pt9k98Mlg0ZeqHAuN1 是子进程 openssl passwd -1 -salt 'oldboy' '123456' 执行后返回的字符串
注意:这里 使用 # 充当 sed 分隔符—— 's#aaa#bbb#' 等效于 's/aaa/bbb/'
括号:保存匹配的字符串以便后向引用
\1:后向引用第一个括号内的的字符串
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询