
lvm.conf
ファイル内の文字列で始まる行を見つけ、角かっこの間のglobal_filter
すべての項目を削除する必要があります("r/.*/"
。
global_filterで始まる行は1つだけです。
分解する前に:
global_filter = [ "a|^/dev/sda.*$|", "a|^/dev/sdb.*$|", "r/.*/"]
削除後は、次のようにする必要があります。
global_filter = [, "r/.*/"]
答え1
sed -i -e '/^global_filter/{\|"r/\.\*/"|s|.*|global_filter = [, "r/.*/"]|;}' data
説明する
sed -i -e '
# look at only lines that begin with global_filter
/^global_filter/{
# and also they should contain the string "r/.*/"
# change everything to the following expression
\|"r/\.\*/"| s|.*|global_filter = [, "r/.*/"]|
## alternatively could be written:
#\|"r/\.\*/"|c\
#global_filter = [, "r/.*/"]
}
' data
答え2
この試み:
$ echo 'global_filter = [ "a|^/dev/sda.$|", "a|^/dev/sdb.$|", "r/.*/"]'|\
sed -E 's/(^global_filter = \[)(.*)(, "r.*$)/\1\3/'
出力:
global_filter = [, "r/.*/"]