2010-11-22 9 views
-1

쉘 스크립트에 변수가 있습니다.perl을 사용하여 쉘 스크립트에서 변수 바꾸기

var=1234_number 

$ var의 정수가 아닌 다른 모든 것을 바꾸고 싶습니다. 펄 라이저를 어떻게 사용합니까?

+1

- 아마도 필요한 출력과 모든 제외 사항을 표시하여 명확히하십시오. '$ var의 정수가 아닌 다른 값으로 바꾸기'는 쉽게 이해할 수 없습니다. –

+0

출력은 $ var = 1234이어야합니다. – nachikethas

+0

저는 '$ var = 1234'에 달러 기호가 필요하지 않도록 아주 조심 스럽습니다. 전체적으로 쉘 스크립트 파일을 편집 할 것을 요청하고 있습니까, 아니면 쉘 스크립트 내의 액션으로 변수의 비 숫자를 제거하겠습니까? 값이 현재 '1234_abc_5678'이면 어떨까요? –

답변

0

bash는 설명서에서이

var=1234_abcd 
var=${var%_*} 
echo $var # => 1234 

페이지의 '매개 변수 확장'에 대한 쉘 아무것도하지만를 사용할 필요가 없습니다.

1

당신은 쉘 스크립트,이 경우,이 충분할 수 있습니다를 편집 할 뭔가를 찾고 될 수 있습니다

perl -i.bak -e 's/\b(var=\d+).*/$1/' shellscript.sh 

(가) '-i은'shellscript.sh.bak에 복사본을 저장, 원본 파일을 덮어 쓰기 ; substitute 명령은 'var'(그리고 더 이상 'var'으로 끝나는 이름이 아닌)에 배정을 찾은 다음 등호, 일부 숫자 및 임의의 비 숫자로 지정하고 숫자 할당 만 남겨 둡니다.

예에서, 제공 : 펄 정규식만으로는 부족하다

var=1234 

하는 것으로 -이이 탈수한다 (폐쇄 브레이스 적하). 이러한 모든 가능한 변형을 다루는

: ${var=1234_number} 

은 매우 상당히 까다로운 입니다 :

:

echo $var=$other 

OTOH, 당신은 쉘 스크립트 내에서 변수에서 숫자를 제거하기 위해 찾고 될 수 있으며,이 경우에

var=$(echo $var | perl -e 's/\D//g') 

작업에 'sed'를 사용할 수도 있습니다.

var=$(echo $var | sed 's/[^0-9]//g') 
+0

Thanks Jonathan ... 방금 ​​출력을 1234로 얻고 싶습니다. var = $ (echo $ var | perl -e 's/\ D // g') -이 작업을했습니다 :) 오타로 인해 미안 해요, $ var = 1234 – nachikethas

관련 문제