문자열을 여러 개행 문자가 포함된 문장으로 교체하세요.

문자열을 여러 개행 문자가 포함된 문장으로 교체하세요.

쉘 스크립트를 사용하여 문자열을 여러 개행 문자에 닿는 문장이나 단락으로 바꾸려고 합니다. 대체 문자열은 런타임에 생성됩니다.

예를 들어:

sed /string_to_be_replaced/Replacement(newline character) string (newline character)/g

모든 의견/아이디어를 환영합니다. 감사해요!

답변1

GNU를 사용하세요 sed.

mline="this is\na line\nin multiple\nlines"
sed "s/PATTERN/${mline}/g" <<<"PATTERN here."
this is
a line
in multiple
lines here.

입력에 /특수 문자가 포함되어 있거나 &다음과 일치하는 경우패턴 매칭존재하다 sed. 전역 패턴 대체를 사용하여 //모든 es를 바꾸거나 이스케이프 /하고 모든 패턴을 \&.

sed "s/PATTERN/${mline//\//\\/}/g; s/PATTERN/\&/" <<<"PATTERN here."

아니면 다른 sed하위 사이트 구분 기호를 사용하고 &다시 탈출하는 것이 더 좋습니다.

sed "s:PATTERN:${mline//&/\\&}:g" <<<"PATTERN here."

마지막으로 실제로 작동하도록 하려면 먼저 sed로 사용할 수 있도록 모든 Enter것을 교체해야 합니다 . 그래서\n\\n\n

실제 입력에서는 여러 줄을 입력합니다.

mline="th&is is
a line
in mul/tiple
line/s"

주문하다:

aline="$(sed -z 's:\n:\\n:g;$s:\\n$::' <<<"$mline")
sed "s:PATTERN:${aline//&/\\&}:g" <<<"PATTERN here."

출력은 다음과 같습니다

th&is is
a line
in mul/tiple
line/s here.

관련 정보