sed: 숫자 바꾸기

sed: 숫자 바꾸기

Ubuntu를 설치/업그레이드할 때 사용할 설치 스크립트를 작성하려고 합니다. 문제를 해결하는 데 문제가 있습니다 logrotate.d.

/var/log/ufw.log
{
rotate 7
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
    reload rsyslog >/dev/null 2>&1 || true
endscript
}

rotate nnnnnn 은 임의의 숫자(보통 1 또는 2) 여야 rotate 99하지만 행에는 영향을 주지 않습니다 postrotate.

두 가지를 모두 시도했지만 어느 것도 내 요구 사항을 충족하지 못했습니다(nnn을 1,2 또는 3자리로 테스트했습니다).

sudo sed  's/rotate[0-9]*/rotate 99/' /etc/logrotate.d/ufw
sudo sed  's/^rotate[0-9]/rotate 99/' /etc/logrotate.d/ufw

답변1

답변2

rotate[0-9]*0개 이상의 숫자가 뒤따르는 교체는 rotate의 끝과 일치합니다 postrotate. rotate[0-9]숫자 하나만 바꾸세요. 또한 후행 공백이 누락되었습니다 rotate. 나는 이것이 당신이 원하는 것을 한다고 생각합니다. 들여쓰기된 줄도 처리합니다.

sudo sed 's/^\( *rotate *\)[0-9][0-9]*/\1 99/' /etc/logrotate.d/ufw

파일을 현재 위치에서 변경하려면 이 -i옵션을 추가하세요.sed

관련 정보