두 개의 특수 문자 사이에 문자열을 가져오고 싶습니다. 예를 들어,
/home/oracle/ggs/text.ext
제 생각에는오라클/ggs위의 문자열에서.
Bash를 사용하여 이 작업을 어떻게 수행할 수 있나요?
답변1
$ expr /home/oracle/ggs/text.ext : '/home/\(.*\)/'
oracle/ggs
/home/
마지막 부분 이후 및 이전 부분을 반환합니다 /
.
요구 사항을 충족할 수 있는 다른 방법:
$ echo /home/oracle/ggs/text.ext | cut -d/ -f3,4
oracle/ggs
$ echo /home/oracle/ggs/text.ext | cut -c 7-16
oracle/ggs
$ echo oracle/ggs
oracle/ggs
답변2
이 특정 예에서는 다음을 사용할 수 있습니다 awk
.
echo "$string" | awk -F '/' '{printf "%s%s%s\n" ,$2,FS,$3}'
Perl에서도 마찬가지입니다:
echo "$string" | perl -lanF '/' -E '$,="/";say @F[1,2]'
답변3
불다
IFS=/ read -ra a <<<'/home/oracle/ggs/text.ext' &&
(IFS=/; printf '%s\n' "${a[*]:2:2}")
oracle/ggs