sed가 선택적 개행 문자와 일치하도록 도와주세요.

sed가 선택적 개행 문자와 일치하도록 도와주세요.

나는 한 줄과 일치하고 일치하는 줄 아래에 내용을 배치하는 이 sed 패턴을 가지고 있습니다. 이것이 내가 지금까지 한 일입니다:

콘텐츠:

<element
    :sample1="foo"
    :sample-attr="$t('foo.bar')"
>

작업 순서:

sed  '/:sample-attr=.*/a :new-attr="true"' file.vue

이는 다음을 작동하고 생성합니다.

<element
        :sample1="foo"
        :sample-attr="$t('foo.bar')"
    :new-attr="true"
    >

그러나 일부 파일에는 여러 줄 속성이 있습니다. 좋다:

:sample-attr="
    $t('foo.bar')
"

선택적 개행 문자와 일치하도록 sed 패턴을 조정하는 데 도움이 필요합니다. 감사해요

답변1

이는 두 경우 모두에서 작동합니다.

$ perl -0pe 's/(\s*):sample-attr="[^"]+"/$&$1:new-attr="true"/' file
<element
    :sample1="foo"
    :sample-attr="$t('foo.bar')"
    :new-attr="true"
>

당신은 perl -i -pe그것을 대체 할 수 있습니다대기줄(즉각적인)

관련 정보