2009-06-10 4 views
0

버전 번호가 들어있는 간단한 텍스트 파일 ./version이 있습니다. 불행하게도, 때로는 파일의 버전 번호는 후행 공백과 줄 바꿈하지 않고 bash는 변수에 버전 번호를 추출하는 가장 좋은, 가장 쉽고 짧은 방법은 무엇bash에서 파일에서 버전 문자열을 추출하고 자르는 방법

1.1.3[space][space][newline] 
[newline] 
[newline] 

처럼 공백과 줄 바꿈 뒤에? 나는 공백 작동하지만 tr -d '\n'를 추가 할 때 작동하지 않습니다

var=`cat ./version | tr -d ' '` 

을 시도했다.

감사합니다, 크리스

답변

0

난 아직도 왜 몰라,하지만이 일 버전 파일을 삭제하고 다시 후 : 무엇을 할 수 ...

var=`cat ./version | tr -d ' ' | tr -d '\n'` 

내가 혼란 스러워요을 텍스트 파일을 만들 때 다른 작업을 수행하십시오. 그러나 이제는 작동합니다.

+2

공백과 개행을 대괄호로 묶어 tr을 한 번 호출하면됩니다. var = $ (cat ./version | tr -d '[\ n]') - Dennis Williamson 0 초 전 [delete this 논평] –

2
$ echo -e "1.1.1 \n\n" > ./version 
$ read var < ./version 
$ echo -n "$var" | od -a 
0000000 1 . 1 . 1 
0000005 
2

순수 배쉬, 다른 과정 :

echo -e "1.2.3 \n\n" > .version 

version=$(<.version) 
version=${version// /} 

echo "'$version'" 

결과 :

0

'1.2.3' 나는 fgm's answer에서 순수 버전을 좋아한다.

추출 된 버전 번호가 트리밍
perl -pe '($_)=/([0-9]+([.][0-9]+)+)/' 

/제거 (개행 또는 캐리지 리턴 문자) :

$> V=$(bash --version | perl -pe '($_)=/([0-9]+([.][0-9]+)+)/') 
$> echo "The bash version is '$V'" 
The bash version is '4.2.45' 

는 또한 다른 캐릭터가있는 경우를 제거하는 한 줄을 명령을 제공

나는 더 많은 설명을하고 좀더 정교한 (그러나 여전히 짧은) 한 줄의 명령을 my other answer에 제공한다.

관련 문제