如果这个问题太基础了,我很抱歉,但我对 Perl 确实非常陌生。现在我想将以下两行代码写在一行中:
perl -e 'print crypt("my_password","\$6\$my_salt\$")'
perl -pe 's|(root):(\$.*?:)|\1:my_encrypted_password:|' /etc/shadow
基本上我想用my_encrypted_password
第一行打印的内容替换 。但我不知道如何正确写?任何帮助将不胜感激。
答案1
你的意思可能是这样的:
perl -pe 's|(?<=root:)[^:]*|crypt("my_password","\$6\$my_salt\$")|e' /etc/shadow
从perldoc perlre
:
Substitution-specific modifiers described in
"s/PATTERN/REPLACEMENT/msixpodualngcer" in perlop are:
e - evaluate the right-hand side as an expression
在右侧,您可以用来$&
引用匹配的部分和$1
第一个捕获的部分等等。