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
...

관련 정보