문자열을 검색하고 줄 시작 부분에 #을 추가하세요.

문자열을 검색하고 줄 시작 부분에 #을 추가하세요.

편집기를 사용하는 데 도움이 필요합니다 vi.

특정 사용자에 대해 crontab의 한 줄을 주석 처리하려고 합니다.

이것은 crontab의 다른 많은 줄 중 하나입니다:

0,5,10,15,20,25,30,35,40,45,50,55 2-23 * * * /home/appuser/CPU_check.sh

그래서 vi 편집기(crontab -e)에서 "CPU_check" 문자열을 검색한 다음 줄 시작 부분에 #add를 추가하여 주석 처리하려고 합니다.

마지막으로 vi 편집기에서 두 개의 문자열(예: CPU_check 및 Memory_check)을 사용하여 검색해야 하는 경우 문자열이 포함된 각 줄의 시작 부분에 #을 추가합니다.

답변1

여섯 번째 중학교에서는

:g/CPU_check/s/^/#/

어디

  • :vi에게 명령 모드로 들어가도록 지시
  • gg 없이 '전역적으로' 적용(여러 줄의 경우) 첫 번째 줄에만 적용됩니다.

  • /CPU_check/주소 입력란 일치CPU_CHECK

  • s대리자
  • /^/줄의 시작(함께)
  • /#/ #상징

추가 대체 수행

저장 및 종료

:x

답변2

귀하는 사용된 솔루션을 원한다고 명시적으로 밝혔습니다 vi. 그러나 이는 한 줄의 sed 명령으로도 달성할 수 있습니다.

sed -i -e 's/.*CPU_check/# &/' -e 's/.*Memory_check/# &/' crontab

이 솔루션은 인라인 파일을 변경합니다. sed 호출에서 플래그를 변경하여 파일의 백업을 저장할 수 있습니다 -i.-i.bak

답변3

" vi"라고 가정하면실제 vi(아니요 vim):

:set extended
:g/(CPU|Memory)_check/s/^/#/

먼저 검색 모드에서 확장 정규식을 활성화한 set extended다음 문자열 또는 을 포함하는 모든 줄 에 대체 s/^/#/( #줄 시작 부분에 - 문자 삽입)를 적용합니다 .CPU_checkMemory_check

에서는 vim다음을 사용할 수 있습니다.

:g/\(CPU\|Memory\)_check/s/^/#/

또는

:g/\v(CPU|Memory)_check/s/^/#/

같은 일을하십시오.

이스케이프를 사용하면 패턴을 확장된 정규식으로 인식할 수 있습니다 \v. "very Magic"의 줄임말입니다(참고자료 참조).vimvimv\v:help magicvim


ed확장된 정규식 지원이 없으면 두 개의 별도 편집 명령을 사용할 수 있습니다.

g/Memory_check/s/^/#/
g/CPU_check/s/^/#/

sed확장 정규식은 해당 옵션을 통해 지원됩니다 -E.

sed -E '/(CPU|Memory)_check/s/^/#/'

또는 표준을 사용하십시오 sed.

sed -e '/CPU_check/s/^/#/' -e '/Memory_check/s/^/#/'

관련 정보