2013-02-16 7 views

답변

5

문제 매개 변수 확장 정규 표현식을 사용하지 않는,하지만 패턴이나 globs와가 (정규 표현식의 차이 비교한다는 것입니다. "filename_을 .CSV"및 글로브 "여기에 내가 할 의도 무엇인가 filename_ .csv "). 글로브는 고정 된 수의 특정 문자열과 일치 할 수 없습니다.

그러나 확장 패턴을 bash에서 사용하도록 설정할 수 있습니다.이 패턴은 원하는만큼 근접해야합니다.

shopt -s extglob # Turn on extended pattern support 
file2=${file/+([0-9])/20130215} 

당신은 정확히 8 digts 일치하지 않을 수 있지만, +(...)는 하나 또는 사용 사례 충분합니다 괄호 안의 패턴을 더 일치 할 수 있습니다. 이 경우에하고 싶은 모든 이후

는 간단히 사용할 수는 _ 문자 사이에 모든 것을 바꿀 것입니다

file2=${file/_*_/_20130215_} 
1
[[ $file =~ ^([^_]+_)[0-9]{8}(_.*) ]] && file2="${BASH_REMATCH[1]}20130215${BASH_REMATCH[2]}"