
この質問が基本的すぎると申し訳ありません。しかし、私はPerlに初めて触れます。それでは、次の2行のコードを1行に書きたいと思います。
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
最初のキャプチャされた部分などを参照するために使用できます。