편집기를 사용하는 데 도움이 필요합니다 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에게 명령 모드로 들어가도록 지시g
g 없이 '전역적으로' 적용(여러 줄의 경우) 첫 번째 줄에만 적용됩니다./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_check
Memory_check
에서는 vim
다음을 사용할 수 있습니다.
:g/\(CPU\|Memory\)_check/s/^/#/
또는
:g/\v(CPU|Memory)_check/s/^/#/
같은 일을하십시오.
이스케이프를 사용하면 패턴을 확장된 정규식으로 인식할 수 있습니다 \v
. "very Magic"의 줄임말입니다(참고자료 참조).vim
vim
v
\v
:help magic
vim
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/^/#/'