2016-09-27 6 views
-1
내가 bash는 스크립트에서 문자열의 하위 문자열을 추출해야

로 취급.추출 문자열은 숫자

echo "number:" 
echo "$number" 
echo "bb" 
registers3=$(echo $number | grep -o -E '[0-9]+') 
registers2="$(grep -oE '[0-9]+' <<< "$number")" 
registers="${number//[^0-9]/}" 
valor=$(grep -o "[0-9]" <<<"$number") 
echo "valor:" 
echo $valor 
echo "reg:" 
echo "$registers" 
echo "reg2:" 
echo "$registers2" 
echo "reg3:" 
echo "$registers3" 

그리고이 출력 :

number: 
/> ------- 
420 
/> 
bb 
valor: 
1 0 3 4 4 2 0 
reg: 
1034420 
reg2: 
1034 
420 
reg3: 
1034 
420 

문제가 $ 번호의 특수 문자입니다 이 "에코"로 코드입니다.

당신은 나를 수만을 추출하는 데 도움이 될 수 있습니다. 이 경우 "421"

감사입니다!

편집 : 내가 VI와와 파일 ($ 번호> file.txt를) 및 오픈 $ 번호를 넣어 경우 설정 목록 내가 얻을 대신이의

^[[?1034h/ > -------$ 
420$ 
/> $ 
+0

귀하의 예를 들어 당신이 당신의 변수에 따옴표를 사용하지 않을 특히 때문에, 혼란 (예를 들어, 'echo "$ number"') 출력이 맹 글링됩니다. 솔직히 말해서, 주된 문제는 echo'number $ | grep' 대신'echo "$ number"| grep'. –

+0

감사의 말에 Tom이 도움을주었습니다. 나는 미시 게시물을 따옴표로 편집합니다 :) –

답변

1

:

registers=$(echo $number | grep -o -E '[0-9]+') 

이 시도 :

registers="$(grep -oE '[0-9]+' <<< "$number")" 

또는 더 나은,이 하나 :

,
registers="${number//[^0-9]/}" 
+0

답장을 보내 주셔서 감사합니다! 그러나 일하지 않습니다. 첫 번째 옵션은 다음과 같습니다. reg : 1034 420 그리고 두 번째 값 : 1034420 –

+0

위의 행을 실행할 때'$ number'의 정확한 값은 무엇입니까? – redneb

+0

번호 i의 값은 mi post에서 편집합니다. 그것은 숫자입니다 : /> - /> (with \ n) –