2014-10-31 3 views
0

나는 다음 줄을 포함하는 스크립트가 있습니다SED 패턴 후 새로운 줄을 삽입

echo + /etc>>$BUFFER 
    echo - /etc/cache>>$BUFFER 

하고를 떠나 :

echo + /etc>>$BUFFER 

내가 나오지도 그들을 편집과 오른쪽이 후 또 다른 라인을 삽입 할을 나머지 파일은 그대로 이것을하기위한 SED 정규 표현식은 무엇입니까? 내가 제대로 이해하면

+0

가 무엇을 의미하고 무엇을 당신의 예를 표시 할을 취소뿐만 아니라이 정확한 라인의 내용에 제한 라인 구분 기호를 추가 (단, 제목 또는 후행 공백을 가질 수있다). – fedorqui

+0

오케, 원래 게시물을 수정했습니다. – munin24

+1

[sed를 사용하여 첫 번째 일치 후 줄 삽입] 중복 가능 (0120-337-3300) – fedorqui

답변

0

이 작동합니다 :

sed 's/echo \+ .*etc>>\$BUFFER/echo + \/etc>>\$BUFFER\necho - \/etc\/cache>>\$BUFFER/' 

을 그렇지 않은 패턴에 슬래시를 처리하는 방법을 잘 어쩌면 최선의 해결책 (메신저입니다 - theorethically 그것을 좋아 탈출 충분해야한다 : \/하지만 이상하게도이 작동하지 않습니다)
이는 $ 마지막 선은 말한다과는 -i 옵션 대신에 파일을 기록 추가입니다

1
sed -i '$a echo - /etc/cache>>$BUFFER' myfile.txt 

불구하고 작동합니다.

이 경기는 어디서든 당신이 정규식과를 해결할 수 원하는 경우//이 그냥 나오지도 기대하기 때문에 정규식이//

sed -i '/echo + \/etc>>$BUFFER/a echo - /etc/cache>>$BUFFER' myfile.txt

에 캡슐화 /처럼 /를 탈출해야합니다 같은 위 문장의 (복사 & 붙여 넣기) 첫 번째 + 기호 (이 웹 사이트의 게시물을 실행하는 소프트웨어의 BUG 가능성이 있음) 이전의 공백을 생략하기 때문에 - 복사 할 때 작동해야하는 버전입니다.

sed -i '/echo \ + \/etc>>$BUFFER/a echo - /etc/cache>>$BUFFER' myfile.txt

또는 앞으로 단일 단일 슬래시를 이스케이프하지 않으려면 (이 경우에는 유용하지 않지만 앞면 슬래시가 많은 경우 다시 이상한 이스케이프 된 공간은 이 웹 사이트의 소프트웨어 (또는 내 브라우저 파이어 폭스) 명령 줄에 입력하면 당신이이 askers 질문에 나타나는 간격이 자신을 두 번 넣을 수 있습니다) :

sed -i '\@echo \ + /etc>>[email protected] echo - /etc/cache>>$BUFFER' myfile.txt

+0

마지막 문장은 올바르게 입력되고 표시됩니다. 텍스트를 복사하여 붙여 넣으면 블로그 소프트웨어의 버그로 인해 + 기호 앞에 공백이 없습니다. –

0
sed -i '\#^ *echo + /etc>>\$BUFFER *$# a\ 
echo - /etc/cache>>$BUFFER' YourFile 
  • 그것은 것 각 발생 후 행을 echo + /etc>>$BUFFER으로 추가하십시오.
  • 난 그냥
관련 문제