sed + 큰따옴표 안의 설정 값

sed + 큰따옴표 안의 설정 값

파일은 이렇습니다

more /etc/sysconfig/chronyd
# Command-line options for chronyd
OPTIONS=""

-4내부에 값을 설정해야 합니다.""

파일은 다음과 같습니다.

# Command-line options for chronyd
OPTIONS="-4" 

sed를 다음과 같이 사용할 수 있습니다.

sed -i s'/OPTIONS=""/OPTIONS="-4"/g' /etc/sysconfig/chronyd

하지만 이는 좋은 옵션이 아닙니다. 왜냐하면 (큰따옴표 안에 공백이 있는 경우)

예를 들어,

more /etc/sysconfig/chronyd
# Command-line options for chronyd
OPTIONS=" "

답변1

다음이 작동해야합니다.

  • space경우임의로 선택할 수 있는,
sed -r 's/OPTIONS="[[:space:]]?"/OPTIONS="-4"/g'
  • space경우적어도 하나 이상,
sed -r 's/OPTIONS="[[:space:]]+"/OPTIONS="-4"/g'

또는 [@AdminBee가 언급한 대로] 두 가지 가능성이 있습니다.

  • space경우적어도 하나 이상또는임의로 선택할 수 있는,
sed -r 's/OPTIONS="[[:space:]]*"/OPTIONS="-4"/g'

예를 들어,

[arif@arif]$ printf '# Command-line options for chronyd\nOPTIONS=" "\n'
# Command-line options for chronyd
OPTIONS=" "
[arif@arif]$ printf '# Command-line options for chronyd\nOPTIONS=" "\n' | sed -r 's/OPTIONS="[[:space:]]"/OPTIONS="-4"/g'
# Command-line options for chronyd
OPTIONS="-4"

답변2

sedRE에서 주소 지정 사용:

sed -e '/^OPTIONS=/s/.*/OPTIONS="-4"/' /etc/sysconfig/chronyd

의미는 다음과 같습니다

  • 일치하는 줄 ^OPTIONS=( 로 시작 OPTION=)에서,
    • 바꾸다모든 것통과 OPTIONS="-4".

답변3

이 시도,

sed  's/^OPTIONS=.*/OPTIONS="-4"/g' /etc/sysconfig/chronyd

또는

sed  's/\(^OPTIONS="\).*"/\1-4"/g' /etc/sysconfig/chronyd

관련 정보