쉘스크립트 substring 질문있습니다.

choijuo의 이미지

$Id 라는 변수에

0777770001001,145 0777770001002,159

라는 값이 저장되어 있을때

./test.sh 1 을 했을때

0777770001001,145 부분의 145 값을 가져오고 싶습니다.

마찬가지로 ./test.sh 2 를 했을때

0777770001002,159 에서 159 값을 가져오고 싶습니다.

제가 생각한것은

if [[ $Id =~ "077777000100$1"]]; then

subid=??
echo subid

fi 이런식으로 해보았는데요

저 subid를 가져올 방법을 모르겠네요

subid=$(Id : : ) 가운데 부분을 문자열로 줄 수가 있나요??

어떻게 얻어낼수 있을지 알려주시면 정말 감사하겠습니다 ㅠㅠ

ymir의 이미지

, 를 기준으로 필요없는 건 잘라 버리거나, 필요한 것만 출력하면 되겠네요.

$ cat test.sh
#!/bin/bash
 
IDS="0777770001001,145 0777770001002,159"
 
for ID in $IDS; do
        if [[ $ID =~ 077777000100$1, ]] ; then
                echo ${ID#*,}
                echo ${ID/*,/}
                echo $(cut -d, -f2 <<< $ID)
        fi
done
$ bash test.sh 1
145
145
145
$ bash test.sh 2
159
159
159

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

choijuo의 이미지

감사합니다!!

bushi의 이미지

$ id="0777770001001,145 0777770001002,159"
 
$ (IFS=$', ';x=($id); echo ${x[1]})
145
 
$ (IFS=$', ';x=($id); echo ${x[3]})
159