![Sed/Awk: 동일한 패턴이 여러 줄에 나타날 때 트리거됩니까?](https://linux55.com/image/12952/Sed%2FAwk%3A%20%EB%8F%99%EC%9D%BC%ED%95%9C%20%ED%8C%A8%ED%84%B4%EC%9D%B4%20%EC%97%AC%EB%9F%AC%20%EC%A4%84%EC%97%90%20%EB%82%98%ED%83%80%EB%82%A0%20%EB%95%8C%20%ED%8A%B8%EB%A6%AC%EA%B1%B0%EB%90%A9%EB%8B%88%EA%B9%8C%3F.png)
텍스트 파일이 있다고 상상해 보세요. 이 파일에 동일한 패턴(예 <br>
: )이 N 줄 연속으로 있는지 알고 싶으면 처음 3줄과 마지막 3줄을 삭제해야 합니다. 이 삭제 부분을 어떻게 해야 하는지 알 수 있을 것 같은데, 이 모달 매직을 구현하는 방법을 모르겠습니다.
시각화에 적합:
Foo <br>
Bar <br>
Baz <br>
<br>
이는 파일에서 기본적으로 일관된 패턴입니다. 그러나 때로는 나중에 파일을 적절하게 처리할 수 있도록 제거해야 하는 항목이 나타나는 경우가 있습니다.
1 Not good Foo <br>
2 <br>
3 <br>
4 <br>
5 Dirt <br>
6 <br>
줄 번호를 추가했습니다.
여러 번의 연속적인 중단이 있다는 점만 비종양성 패턴과 다릅니다. 따라서 3행에서 이것이 종양 세그먼트라는 것을 알게 되면 1행부터 6행까지 삭제해야 합니다.
따라서 결론은 다음과 같습니다. <br>
행에 2개의 행이 표시될 때마다 처음 2개 행, 현재 행 및 다음 3개 행을 삭제합니다.
답변1
귀하의 요구 사항을 올바르게 읽었다면 Vim에서 파일을 열고 다음을 입력하여 원하는 결과를 얻을 수 있습니다.
:g/^<br>\n<br>$/-1,+4d
그런 다음 "Enter"를 누르십시오.
ex
스크립트를 작성해야 한다면 그렇게 할 수도 있습니다.
예:
앞으로:
Some line
Not good Foo <br>
<br>
<br>
<br>
Dirt <br>
<br>
Some additional line
뒤쪽에:
Some line
Some additional line