![帮助 sed 匹配可选换行符](https://linux22.com/image/213901/%E5%B8%AE%E5%8A%A9%20sed%20%E5%8C%B9%E9%85%8D%E5%8F%AF%E9%80%89%E6%8D%A2%E8%A1%8C%E7%AC%A6.png)
我有这个 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
来替换排队(即时)