나는 한 줄과 일치하고 일치하는 줄 아래에 내용을 배치하는 이 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
그것을 대체 할 수 있습니다대기줄(즉각적인)