2013-01-17 4 views

답변

1

a.txt이

W32i APP -  8.0.0.xxxxx shp 6SFE25~1.EXE 

코드

num=$(< a.txt) 
num=${num#*.0.0.} # "left" remove everything up to .0.0. 
num=${num%% *}  # "right" remove "all" after " " char 
echo "num=${num}" 

출력 xxxxx는

,

${num#xxx}, ${num##xx}, ${num%x}, ${num%%x}과 같은 변수 수정자가 어떻게 작동 하는지를 이해하는 데 시간을 할애하게되어 기쁩니다. 고급 쉘은 또한 ${num/0/9}${num//0/9} 같은 대체 문자 인 sed을 지원합니다.

IHTH는

+0

을 테스트! 그 말은 정말 제가 배울 수 있도록 도와 줘서 고마워요! :) – Babycece

+1

'%'와'%%'수정 자의 차이점을보기 위해서,이 코드는 좋은 예입니다. 즉,'%'만 사용하면'xxxxx shp' 결과가 생깁니다. 왜냐하면 삭제가 오른쪽에서 시작하고 첫번째 ''로 끝까지 삭제합니다. '%%'을 사용하면 삭제가 오른쪽에서 시작하지만, 모든 ''(오른쪽으로 이동)를 찾은 다음 모든 항목을 오른쪽에서 삭제하고 'xxxxx' 만 남깁니다. 모두에게 행운을 빕니다. – shellter

+0

나는 당신에게 차이점을 물으려 고하고 있었고 방금 설명했습니다! 자세한 설명을 해주셔서 정말 고마워요. 이것은 나와 같은 초보자들에게 큰 도움이됩니다 :) xxx – Babycece

1
#!/bin/sh 

read < a.txt 
[[ $REPLY =~ 8.0.0.([^\ ]*) ]] 
echo ${BASH_REMATCH[1]} 

출력

xxxxx 
1
perl -lne 'm/(\d{5})/g;print $1' 

here

그것은 작동
관련 문제