누군가 나를 도울 수 있는지 궁금합니다. 다음 줄이 포함 된 파일이 있습니다.문자열을 검색하여 쉘 스크립트의 변수에 넣으려면 어떻게해야합니까?
W32i APP - 8.0.0.xxxxx shp 6SFE25~1.EXE
xxxxx는 5 자리 숫자이며 매번 다른 수입니다. xxxxx를 검색하여 변수에 넣을 수 있기를 바라면이 varibale을 사용할 수 있습니다. grep과 sed를 사용합니까?
누군가 나를 도울 수 있는지 궁금합니다. 다음 줄이 포함 된 파일이 있습니다.문자열을 검색하여 쉘 스크립트의 변수에 넣으려면 어떻게해야합니까?
W32i APP - 8.0.0.xxxxx shp 6SFE25~1.EXE
xxxxx는 5 자리 숫자이며 매번 다른 수입니다. xxxxx를 검색하여 변수에 넣을 수 있기를 바라면이 varibale을 사용할 수 있습니다. grep과 sed를 사용합니까?
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는
#!/bin/sh
read < a.txt
[[ $REPLY =~ 8.0.0.([^\ ]*) ]]
echo ${BASH_REMATCH[1]}
출력
xxxxx
perl -lne 'm/(\d{5})/g;print $1'
는 here
그것은 작동
을 테스트! 그 말은 정말 제가 배울 수 있도록 도와 줘서 고마워요! :) – Babycece
'%'와'%%'수정 자의 차이점을보기 위해서,이 코드는 좋은 예입니다. 즉,'%'만 사용하면'xxxxx shp' 결과가 생깁니다. 왜냐하면 삭제가 오른쪽에서 시작하고 첫번째 ''로 끝까지 삭제합니다. '%%'을 사용하면 삭제가 오른쪽에서 시작하지만, 모든 ''(오른쪽으로 이동)를 찾은 다음 모든 항목을 오른쪽에서 삭제하고 'xxxxx' 만 남깁니다. 모두에게 행운을 빕니다. – shellter
나는 당신에게 차이점을 물으려 고하고 있었고 방금 설명했습니다! 자세한 설명을 해주셔서 정말 고마워요. 이것은 나와 같은 초보자들에게 큰 도움이됩니다 :) xxx – Babycece