텍스트 줄을 일치시킨 후 새 텍스트 줄을 삽입하시겠습니까(sed)?

텍스트 줄을 일치시킨 후 새 텍스트 줄을 삽입하시겠습니까(sed)?

여러 HTML 파일의 양식 태그에 숨겨진 HTML 입력 태그를 삽입해야 합니다.

내 생각은 모든 인스턴스를 검색하는 것입니다

<form

찾은 경우 아래에 다음을 포함하는 행을 삽입합니다.

<input type="hidden" name="csrf_token" value="$csrf_token" /> 

이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 난 가까워

sed -e '/<form/a\<input type="hidden" name="csrf_token" value="$csrf_token"/>'

답변1

각 아래에 무언가를 추가하려면 캡처된 시퀀스를 유지하고 싶다는 것을 나타내기 위해 <form추가해야 합니다 (또한 필요하다고 언급했습니다).&\n

$ find *.html | xargs sed -ie 's/<form/&\n\<input type="hidden" name="csrf_token" value="$csrf_token"\/>/g'

답변2

알고 있었다. 수행 방법은 다음과 같습니다.

find . -name \*.html | xargs sed -i '/<form/a\<input type="hidden" name="csrf_token" value="$csrf_token" />'

답변3

이는 Perl 단일 라이너를 사용하여 쉽게 달성할 수 있습니다.

perl -i.bkp -pe 's|<form|<form\n<input type="hidden" name="csrf_token" value="$csrf_token" /> |' *.html

-i 내부 편집용

.bkp는 이 확장자를 가진 백업 파일을 생성합니다.

관련 정보