이 광기를 어떻게 바꿀 수 있습니까? [폐쇄]

이 광기를 어떻게 바꿀 수 있습니까? [폐쇄]

인스턴스를 교체하는 방법

id="ogwb"

그리고

id="ogwb" name="ogwb" value="<?php echo htmlspecialchars($_POST['ogwb']); ?>"

사용할 것인가 sed, 교체할 것인가?

답변1

올바른 명령:

sed -E 's/^id="([^"]+)"$/& name="\1" value="<?php echo htmlspecialchars($_POST['"'\1'"']); ?>"/'

포함된 작은따옴표가 필요한 경우 큰따옴표에서 작은따옴표로 전환됩니다. Bash에서는 작은따옴표 안에 작은따옴표를 포함할 수 없습니다. 기간.

하지만 따옴표는 문자열이 아니기 때문에 중요하지 않습니다.터미네이터Bash에서는 서로 다른 인용 스타일 사이의 구분 기호일 뿐입니다. 그래서:

some-command 'This is in a single quoted string'"'"'This is another quoted string, but is part of the same argument to some-command'
                                                ^^^
                             This single quote is inside of double quotes.

sed쉘 참조가 쉘 참조 와 상호 작용하는 방식에 대해 걱정하지 않으려면 sed명령을 파일에 붙여넣고 를 사용하여 호출하십시오 sed -f.

답변2

echo 'id="ogwb"' | sed 's,id=\(.*\),id=\1 name=\1 value="<?php echo htmlspecialchars($_POST[\1]); ?>",'

관련 정보