sed: 불확정 문자열의 가변 길이 숫자 값 변경

sed: 불확정 문자열의 가변 길이 숫자 값 변경

하드웨어 드라이버에서 수정해야 할 문자열.conf파일은 다음과 같습니다:

options rsi_sdio dev_oper_mode=13

충분히 단순해 보이지만 개발자는 정밀도와 일치하는 sed 표현식을 깨뜨릴 수 있는 이 문자열을 기꺼이 변경합니다. 이제 값 앞에 오는 문자열을 "불확정"으로 처리해야 합니다. 100% 정밀도로 안정적으로 예측할 수는 없습니다.

따라서 값 자체에 대해서만 일치시킬 수 있으며 그 자체도 가변적일 수 있습니다. 현재는 "13"이지만 나중에 변경될 수 있습니다. 유일하게 "알려진" 것은 수정해야 하는 값의 길이가 1자리 또는 2자리일 수 있다는 것입니다.

따라서 문자열과 값이 모두 변경되더라도 파손을 방지하기 위해 값이 성공적으로 설정될 수 있도록 보장할 수 있는 완벽한 정규식이 필요합니다!

답변1

개발자들이 나에게 이 변화구를 던졌을 때 실제로 무선 연결이 크게 중단되었습니다. 많은 사람들이 처할 수 있는 상황이므로 해결책을 게시하겠습니다.

sed -E -i 's/=[0-9]{1,2}$/=6/' /etc/modprobe.d/rs9113.conf

이는 등호 다음에 최소 1자리, 최대 2자리 숫자가 오는 것과 일치합니다. 따라서 문자열이 변경될 수 있고 기본값인 "13"도 변경될 수 있지만 이 정규식은 앞으로도 계속 유지되어야 합니다.

이러한 유형의 광범위한 가변성을 다루는 다른 사람들이 이 접근 방식이 스크립트를 올바르게 유지하는 데 도움이 되기를 바랍니다.

관련 정보