2014-09-02 7 views
6

내가 나오지 사용하여 파일의 세 번째 줄에 텍스트를 삽입하기 위해 노력하고있어, 나는 다른 포럼에서 발견 한 구문은 다음과 같습니다나오지 삽입 라인 명령 OSX

sed -i '' "3i\ text to insert" file 

내가 그러나이를 사용하는 경우, 오류가 발생합니다.

sed: 1: "3i\ text to insert": extra characters after \ at the end of i command 

문제의 원인을 파악할 수 없습니다. 나는 OSX를 사용하고 있는데, 이것이 내가 내 확장 기능으로 비어있는 이유이다.

감사합니다.

답변

19

는 사용자가 직접 \ 후 줄 바꿈을 넣어해야합니다

sed '3i\ 
text to insert' file 

이 실제로 POSIX specification에 의해 정의 된 동작입니다. GNU sed가 같은 줄에 삽입 할 텍스트를 지정할 수있게 해주는 확장 기능입니다.

+3

나는 '는'3i' 비트 후 삽입 된 텍스트'는 인 지적에 대한 추가 +1을주고 싶습니다 GNU 확장 (하지만 그 중 하나만 줄 수 있습니다). –

+0

@JonathanLeffler 귀하를 대신하여 다른 +1을 수여합니다 :-) –

6

OSX에서 당신은 사용할 수 있습니다

sed -i.bak '3i\ 
text to insert 
' file 
1

여기에 한 줄 구문에 그것을 할 방법

sed -i '' -e "2s/^//p; 2s/^.*/text to insert/" file 
  • 중복 두 번째 줄 : 2s/^//p;

  • 텍스트로 새로운 라인을 교체 : 2s/^.*/text to insert/

0

이 작품을 나를 위해

sed -i '' '3i\ 
text to insert' file 
0

특정 파일 형식의 파일 (내 경우에는 .sh)을 수정하려면이 명령을 사용하십시오.

sed -i '.sh' '3i\ 
mymodified text to insert' temp.sh 

당신이 슬래시 ("\") 후 줄 바꿈이 있는지 확인