2013-11-21 5 views
3

필자는 bash 스크립트를 작성하고 있으며이 스크립트 내에서 특정 파일에 대해 조치를 취해야하며 스크립트 작업을 마치면 스크립트의 나머지 부분을 계속 수행합니다.특정 줄의 파일을 검색 한 다음 해당 줄에 주석으로 추가하거나 주석을 달려면 어떻게합니까?

파일을 검사해야하는데 특정 구성 줄을 찾았 으면 먼저 한 구성에서 주석을 달고 다른 구성 옵션을 주석 처리해야합니다.

EDIT : 와우, 내 첫 번째 질문과 나는 가장 중요한 세부 사항을 빠뜨리지! 나는이 구체적인 예와 함께 내 질문을 편집 한 :

내가 파일 dhcpd.conf 파일을 편집하기 위해 노력하고있어, 나는 주석이 라인을 찾고 있어요 :

그래서
option domain-name "example.org"; 
option domain-name-servers ns1.example.org, ns2.example.org; 

그들은 결국

#option domain-name "example.org"; 
#option domain-name-servers ns1.example.org, ns2.example.org; 

이 시점에서 bash 스크립트는 계속 진행되고 다른 지침을 실행합니다.

도움을 주시면 큰 도움이 될 것입니다. :-)

+3

스택 오버플로에 오신 것을 환영합니다! 잠깐, [좋은 질문을 어떻게하면 좋습니까?] (http://stackoverflow.com/help/how-to-ask) – devnull

+0

당신이 언급하는 것을 잊어 버린 중요한 세부 사항은 당신이 어떻게 당신이 코멘트하고 싶은 라인과 당신이 코멘트를하고 싶은 라인? 패턴 검색 (예 : grep?)을 사용하여 행을 찾았습니까? 아니면 행 번호를 알고 있습니까? 아니면 완전히 다른 것입니까? 나는 이것이 그 맛있는 음식 없이는 제대로 대답 될 수 있다고 생각하지 않는다. – ffledgling

답변

0

더 나은 해결책이있을 수 있지만 파일로 시도 할 수 있습니다.

$ cat file.txt 
option domain-name example.org; 
dont touch me 
option domain-name-servers ns1.example.org 
dont touch this 

$ sed -i 's/^option domain-name/#option domain-name/' file.txt 

$ cat file.txt 
#option domain-name example.org; 
dont touch me 
#option domain-name-servers ns1.example.org 
dont touch this 

$ sed -i 's/^option domain-name/#option domain-name/' file.txt 

가있는 working DEMO through command line using echo

+0

이것을 시도하면, 단지 전체 파일을 출력하고 변경하지 않습니다 :'sed 's/^ "option domain-name"example.org ";/# option domain-name"example.org "; "/ 'dhcpd.conf' 내가 뭘 잘못하고 있는거야? – robotsandcake

+0

sed는 파일을 변경하지 않고 STDOUT에 대한 변경 사항 만 인쇄합니다. 출력을 새 파일로 리디렉션하거나 더 나은 방법을 사용하십시오. sed -i를 사용하십시오. -i는 실제로 파일 내용을 변경합니다. 그러나 스크립트를 테스트하고 개발할 때 -i와 함께주의하십시오! – kkeller

+0

감사합니다. 감사합니다. – robotsandcake

0

당신이 나오지 명령에 지시를 변환 한 다음의 가장 유용한 사례를 발견해야한다 sed -f commands config.file.txt

실행할 수 있습니다 하나 개의 구성 파일을 통해 다양한 명령을 수행해야하는 경우 여기에 sed 사용 : http://sed.sourceforge.net/sed1line.txt

관련 문제