2014-09-25 2 views
1

파일의 한 줄을 변수에 저장된 여러 줄로 바꾸려고합니다. 화면에 인쇄 할 때 정확한 결과를 얻을 수 있지만 '적절한 위치에'교체하지 않으려는 경우는 아닙니다.sed 줄을 여러 줄 변수로 바꾸기

*some code* 
*some code* 
line number 1 
line number 2 
line number 3 
*some code* 

내가 노력 코드는했다 : 나는 결과 파일이 원하는

*some code* 
*some code* 
string_to_replace 
*some code* 

:

파일 양식을 가지고

new_string="line number 1\nline number 2\nline number 3" 

# Correct output on screen 
sed -e s/"string_to_replace"/"${new_string}"/g $file 

# Single-line output in file: "line number 1line number 2line number 3" 
sed -i s/"string_to_replace"/"${new_string}"/g $file 

-i 결합하는 시도 -e 옵션을 사용하면 결과는 -i만을 사용할 때와 같습니다. 누군가이 문제를 해결하는 데 도움을 줄 수 있습니까?

내가 sed에서 GNU 나오지도 (맥에서 ssh를 통해 연결)에 CentOS에 버전 4.1.5

+0

내 [지금 삭제 된] 답변에서 볼 수 있듯이 Windows에서 파일을 변환하려고합니다. 이를 위해'dos2unix'를 확인하십시오. – fedorqui

+0

스택 오버플로는 프로그래밍 및 개발 관련 질문을위한 사이트입니다. 이 질문은 프로그래밍이나 개발에 관한 것이 아니기 때문에 주제와는 거리가 먼 것처럼 보입니다. 도움말 센터에서 [여기에서 내가 질문 할 수있는 항목은 무엇입니까?] (http://stackoverflow.com/help/on-topic)를 참조하십시오. 아마도 [Super User] (http://superuser.com/) 나 [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/)가 더 나은 곳이 될 것입니다. – jww

+0

''$ {new_string // \ n/\\ n} "'시도 했습니까? Sed는 치환을 위해'\ n'을 요구한다; 리터럴 뉴 라인은 다음 명령을 시작합니다. –

답변

0

을 사용하고 당신이 인용 명령 문자열을 두 배로 쉘과 같이 당신을위한 확장을 할 수 있도록 할 수 있습니다 :

new_string="line number 1\nline number 2\nline number 3" 
sed -i "s/string_to_replace/$new_string/" file