다음 코드 블록을 어떻게 주석 처리할 수 있나요? [폐쇄]

다음 코드 블록을 어떻게 주석 처리할 수 있나요? [폐쇄]

내가 가진 것:

...
    {if $dockerPipelinesEnabled}
        {call aui.buttons.button}
            {param text: getText('deployment.environment.docker.button') /}
            {param tagName: 'a' /}
            {param id: 'configureEnvironmentDocker' + $id /}
            {param extraAttributes: [ 'href': contextPath() + '/deploy/config/configureEnvironmentDocker.action?environmentId=' + $id ] /}
        {/call}
    {/if}

    {call aui.buttons.button}
        {param text: getText('deployment.project.environment.agents') /}
        {param tagName: 'a' /}
        {param id: 'configureEnvironmentAgents' + $id /}
        {param extraAttributes: [ 'href': contextPath() + '/deploy/config/configureEnvironmentAgents.action?environmentId=' + $id ] /}
    {/call}

    {call widget.override.aui.badgeButton}
        {param text: getText('environment.notifications') /}
        {param tagName: 'a' /}
        {param id: 'configureDeploymentsNotifications' + $id /}
        {param extraAttributes: [ 'href': contextPath() + '/deploy/config/configureEnvironmentNotifications.action?environmentId=' + $id ] /}
        {param badgeText: $notificationsNumberString /}
    {/call}
...

내가 원하는 것은:

...
    {if $dockerPipelinesEnabled}
        {call aui.buttons.button}
            {param text: getText('deployment.environment.docker.button') /}
            {param tagName: 'a' /}
            {param id: 'configureEnvironmentDocker' + $id /}
            {param extraAttributes: [ 'href': contextPath() + '/deploy/config/configureEnvironmentDocker.action?environmentId=' + $id ] /}
        {/call}
    {/if}

  /**  {call aui.buttons.button}
        {param text: getText('deployment.project.environment.agents') /}
        {param tagName: 'a' /}
        {param id: 'configureEnvironmentAgents' + $id /}
        {param extraAttributes: [ 'href': contextPath() + '/deploy/config/configureEnvironmentAgents.action?environmentId=' + $id ] /}
    {/call} */

    {call widget.override.aui.badgeButton}
        {param text: getText('environment.notifications') /}
        {param tagName: 'a' /}
        {param id: 'configureDeploymentsNotifications' + $id /}
        {param extraAttributes: [ 'href': contextPath() + '/deploy/config/configureEnvironmentNotifications.action?environmentId=' + $id ] /}
        {param badgeText: $notificationsNumberString /}
    {/call}
...

여러 명령문에서 고유한 줄에 주석을 달 수 있지만 해당 코드 블록에는 다른 블록에 존재하는 공통 줄이 있습니다.

허용되는 형식은 다음과 같습니다.

/**  {call aui.buttons.button}
        {param text: getText('deployment.project.environment.agents') /}
        {param tagName: 'a' /}
        {param id: 'configureEnvironmentAgents' + $id /}
        {param extraAttributes: [ 'href': contextPath() + '/deploy/config/configureEnvironmentAgents.action?environmentId=' + $id ] /}
    {/call} */

또는:

 /**  {call aui.buttons.button} */
 /**    {param text: getText('deployment.project.environment.agents') /} */
 /**       {param tagName: 'a' /} */
 /**       {param id: 'configureEnvironmentAgents' + $id /} */
 /**       {param extraAttributes: [ 'href': contextPath() + '/deploy/config/configureEnvironmentAgents.action?environmentId=' + $id ] /}
 /**   {/call} */

편집하다

나는 sedand를 사용하여 이 문제를 해결 하려고 시도했지만 awk다소 사소한 것 같습니다grep .

grep --invert-match "$(grep -B 1 -A 4 .*deployment.project.environment.agents <path-to-file>

grep일치 항목을 블록으로 처리하는 대신 각 행이 제거되어 결과가 손상되는 것처럼 보입니다 .

고쳐 쓰다

전체 파일은 다음과 같습니다여기(재미있는 내용은 맨 아래에 있습니다)

이 파일에서는 위 섹션을 다음과 같이 주석 처리하고 싶습니다.허용되는 형식).

여러 위치에 나타나 므로 {call aui.buttons.button}마커만으로는 충분하지 않습니다. 코드 블록을 제거하는 것도 허용됩니다.

답변1

노력하다 sed:

sed '/{call/ {:L; N; /{\/call/!bL; /deployment.project/ {s/^/\/**/; s/$/*\//}} ' file
    {if $dockerPipelinesEnabled}
        {call aui.buttons.button}
            {param text: getText('deployment.environment.docker.button') /}
            {param tagName: 'a' /}
            {param id: 'configureEnvironmentDocker' + $id /}
            {param extraAttributes: [ 'href': contextPath() + '/deploy/config/configureEnvironmentDocker.action?environmentId=' + $id ] /}
        {/call}
    {/if}

/**    {call aui.buttons.button}
        {param text: getText('deployment.project.environment.agents') /}
        {param tagName: 'a' /}
        {param id: 'configureEnvironmentAgents' + $id /}
        {param extraAttributes: [ 'href': contextPath() + '/deploy/config/configureEnvironmentAgents.action?environmentId=' + $id ] /}
    {/call}*/

    {call widget.override.aui.badgeButton}
        {param text: getText('environment.notifications') /}
        {param tagName: 'a' /}
        {param id: 'configureDeploymentsNotifications' + $id /}
        {param extraAttributes: [ 'href': contextPath() + '/deploy/config/configureEnvironmentNotifications.action?environmentId=' + $id ] /}
        {param badgeText: $notificationsNumberString /}
    {/call}

각 만남마다 라인을 찾을 {call}때까지 패턴 공간으로 라인을 수집합니다 (단, mosvy의 주의 사항 참조). {/call}그런 다음 대상 패턴이 패턴 공간에 있으면 줄의 /**시작과 끝 부분에 추가합니다.*/

관련 정보