2017-04-11 2 views
1

abc.c에서 2 행을 주석 처리하고 파일의 3 행에 New second line 텍스트를 추가하고 싶습니다.줄을 주석으로 처리하고 그 아래에 다른 줄을 삽입하는 방법?

abc.c :

First line 
Second line 
Third line 

내 수정 된 파일은 내가 명령

sed 's/Second line/\/\/Second line\ 
New second line/g' abc.c > tmp.c && mv tmp.c abc.c 

를 사용하여 시도

First line 
//Second line 
New second line 
Third line 

과 같아야하지만 "왜곡 나오지도 명령"와 같은 오류를 제공합니다 sunOS 5.10

누구나 올바른 명령을 사용할 수 있습니까?

답변

0

시도 : 파일의

sed "s/Second line/\/\/&\\ 
New second line/g" abc.c > tmp.c && mv tmp.c abc.c 
+0

안녕 @Kripalini. 이게 너를 위해 일 했니? – Nick

0

sed -i.bak -e"s/Second line/\/\/&\nNew second line/;" abc.c

이후 내용 :

First line 
//Second line 
New second line 
Third line 
+0

'p'를 쓰면 파일의 모든 줄이 복사되기 때문에 '-n'을 사용하지 말아야합니다. 점은 무엇인가? '\ n'은 모든 플랫폼 (예 : macOS)에서 작동하지 않지만 리터럴 포함 된 개행 문자는 작동합니다. {}는 불필요합니다. – Nick

+0

내 컴퓨터에서 대답을 사용하지 못했습니다 (Windows의 경우 GNU sed 버전 4.2.1). 아마도 삽입 된 개행 문자를 사용하는 방법을 모르기 때문일 것입니다. 나는 당신의 설명에 따라 그것을 배울 것이 고맙게 생각합니다. 내 버전은 내 컴퓨터에서 작동하는 하나의 라이너입니다. 그래서 저는 대안적인 대답으로 제게 효과가있는 것을 제공한다고 생각했습니다. 나는'-n'의 사용을 인정하고'p'는 비효율적으로 중복됩니다. 나는 대답을 편집 할 것이다. 그것을 지적 주셔서 감사합니다. – Yunnosch

+0

OP와 마찬가지로 임베디드 개 라인을 이해하는 데 문제가있을 수 있습니다. 그래서 당신은 아마 당신이 그것을 설명하면 많은 upvotes (적어도 OP와 나를 upvote에 의해 수용)에 대한 설정됩니다. – Yunnosch