그래서 몇 가지 비슷한 문제를 해결했지만 그 중 어떤 것도 해결할 수 없습니다.
현재 이것을 사용하려고 합니다:
sed -i '/^<script/,/script>/{/^<script/!{/script>/!d}}' file.txt
나는 이렇게 하면 <script
과 사이의 모든 내용이 삭제될 것이라고 생각했지만, script>
짐작하셨겠지만 그렇지 않습니다.
txt 파일의 코드는 다음과 같습니다.
<script type="text/javascript">
bla bla some script bla bla
</script>
여러 위치에 여러 스크립트가 있습니다.. txt그것들을 모두 삭제해야합니다.
답변1
여는 태그와 닫는 태그(여는 태그는 항상 줄의 시작 부분에 있음) script
사이의 텍스트를 제거하려면 다음을 수행하면 됩니다.
sed -i '/^<script/,/<\/script>/d' file
물론, sed
이런 일을 위해서나쁜 생각이야적절한 파서를 사용해야 합니다. 예를 들어, 입력 파일에 중첩된 블록이 포함되어 있으면 어떻게 될까요?
<script type="text/javascript">
bla bla some script bla bla
<script>
foo
</script>
</script>
그러나 이것이 문제인지 아닌지는 입력 데이터에 따라 다릅니다.