문자열이 포함된 단락의 각 줄 시작 부분에 문자를 삽입하는 방법

문자열이 포함된 단락의 각 줄 시작 부분에 문자를 삽입하는 방법

여기에 다른 요청이 있습니다. 텍스트 파일이 있고 @특정 검색 문자열이 포함된 각 단락(단락 = 빈 줄로 구분)의 시작 부분에 문자를 넣어야 합니다. 예를 들어

hello

this
is
a
test

hi

다음을 생성해야 합니다.

hello

@this
@is
@a
@test

hi

#단락을 선택적으로 인쇄하기 위해 다음이 있지만 각 줄의 시작 부분에 문자를 삽입 하지 않습니다 .

sed -e '/./{H;$!d;}' -e 'x;/SEARCH_STRING/!d;'

어떤 아이디어가 있나요? 미리 감사드립니다!

답변1

이것은 대체로 !d마지막("제거하지 않고")을 ("개행 문자와 하나의 추가 문자로 교체")로 바꾸는 문제가 아닌가요?s/\n/\n@/g;

$ cat file
hello

this
is
a
test

hi


$ sed -e '1{x;$!d}' -e '/./{H;$!d;}' -e 'x;/test/ s/\n/\n@/g;' file
hello

@this
@is
@a
@test

hi

추가 표현식은 1{x;$!d}(빈) 예약 공간에 첫 번째 줄을 추가함으로써 발생할 수 있는 추가 빈 줄을 방지합니다.

관련 정보