이 질문이 너무 기본적이라면 죄송합니다. 하지만 저는 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
첫 번째 캡처된 부분 등을 참조하는 데 사용할 수 있습니다.