2012-03-08 4 views
2

다음 명령은 예상대로 작동하며 redis.conf 파일의 데이터베이스 수를 표시합니다. 필자가해야 할 일은 32로 변경하고 단일 명령을 사용하여 동일한 파일로 다시 저장하는 것입니다.sed에서 와일드 카드 사용

# grep ^databases redis.conf | awk '{print $2}' 
16 

다음 명령은 숫자가 16 인 경우에만 작동합니다. 알 수없는 번호를 32로 어떻게 변경합니까?

sed -i 's/databases\ 16/databases\ 32/' redis.conf 

답변

2

당신은 [0-9]* 또는 \d 또는 각각의 POSIX 문자 클래스 ([:digit:])를 사용할 수 있습니다. 그래서 같이 :

sed -i 's/databases\ [0-9]*/databases\ 32/' redis.conf 

주 : 쉘의 탈출 때문에 \d는 또는 추가 백 슬래시가 필요하지 않을 수있다. 참고 : sed (및 awk)의 다른 맛이 있습니다.

최상의 휴대 성을 위해 나는 [0-9][:digit:]이 최선의 선택이라고 생각합니다. 일정한 반복 횟수를 맞추려면 표현식을 반복하십시오.

1

2 자리 숫자로만 보장 될 수 있습니까?

sed -i 's/^databases [0-9][0-9]/databases 32/' redis.conf 
관련 문제