nanorc
내 파일의 예는 다음과 같습니다.
(...)
## Detect word boundaries differently by treating punctuation
## characters as parts of words.
# set wordbounds
## The characters (besides alphanumeric ones) that should be considered
## as parts of words. This option does not have a default value. When
## set, it overrides option 'set wordbounds'.
# set wordchars "<_>."
## Paint the interface elements of nano. These are examples;
## by default there are no colors, except for errorcolor.
# set titlecolor brightwhite,blue
# set statuscolor brightwhite,green
# set errorcolor brightwhite,red
# set selectedcolor brightwhite,magenta
# set numbercolor cyan
# set keycolor cyan
# set functioncolor green
## In root's .nanorc you might want to use:
# set titlecolor brightwhite,magenta
# set statuscolor brightwhite,magenta
# set errorcolor brightwhite,red
# set selectedcolor brightwhite,cyan
# set numbercolor magenta
# set keycolor brightmagenta
# set functioncolor magenta
## Setup of syntax coloring.
##
## Format:
##
## syntax "short description" ["filename regex" ...]
(...)
## Paint the interface elements of nano.
블록을 다음으로 변경 해야 합니다 .
## Paint the interface elements of nano. These are examples;
## by default there are no colors, except for errorcolor.
set titlecolor brightwhite,blue
set statuscolor brightwhite,green
set errorcolor brightwhite,red
set selectedcolor brightwhite,magenta
set numbercolor cyan
set keycolor cyan
set functioncolor green
즉, 첫 번째 색상 블록의 주석 처리를 해제하고 두 번째 색상 블록을 삭제합니다( .nanorc
루트에만 권장).
sed 명령을 사용하여 이를 어떻게 달성할 수 있습니까? 나는 (하나의 큰 명령 대신) 여러 개의 sed 명령을 사용하여 간단하고 읽기 쉽게 만들 수 있다면 이것을 선호합니다.
답변1
노력하다:
sed "/## Paint the interface elements of nano./,/^$/ \
{s/^# //; /## In root's .nanorc you might want to use:/,/^$/d}" infile
## Paint the interface elements of nano.
첫 번째 빈 줄과 첫 번째 빈 줄 사이의 줄을 찾은 다음 해당 줄이 해시 공간으로 시작하는 경우 해당 줄의 주석 처리를 제거하고 먼저 동일한 블록에서 빈 줄을 찾을 때까지 #
해시 공간으로 시작하는 줄 사이의 다른 모든 항목을 삭제합니다. ## In root's .nanorc you might want to use:
우리가 {...}
적용한 것sed 스크립트필요한 블록만 인쇄되고 sed
다른 모든 줄은 기본 작업 조건과 일치하지 않으면 인쇄됩니다.sed