使用 sed 将多行字符串替换为另一个多行字符串

使用 sed 将多行字符串替换为另一个多行字符串

例如。输入 :

// copyright

package com.base

import com.base
import com.base
...

我想用另一个字符串替换模式“//copyright\n\n^package.*”

我正在尝试使用

sed -e 's/.,^package/$(anotherString)/g' $text 

答案1

使用 sed

这是一个sed解决方案:

$ sed '\|// copyright|,\|^package|{s/^package/Something\nElse/p;d}' file
Something
Else com.base

import com.base
import com.base
...

您想删除所有原始package行吗?如果是这样,只需要进行一个小的更改:

$ sed '\|// copyright|,\|^package|{s/^package.*/Something\nElse/p;d}' file
Something
Else

import com.base
import com.base
...

使用 awk

$ awk '/^\/\/ copyright/,/^package/{if (/^package/) print "Something\nElse"; next} 1' file
Something
Else

import com.base
import com.base
...

相关内容