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
つまり、最初のカラーブロックのコメントを外し、2番目のカラーブロックを削除します(ルートのみに.nanorc
推奨)。
sedコマンドを使用してこれを達成するにはどうすればよいですか?私は(1つの大きなコマンドの代わりに)複数の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