설명하다

설명하다

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/.*/"]

관련 정보