Shell을 사용하여 두 특수 문자 사이의 문자열을 얻는 방법은 무엇입니까?

Shell을 사용하여 두 특수 문자 사이의 문자열을 얻는 방법은 무엇입니까?

두 개의 특수 문자 사이에 문자열을 가져오고 싶습니다. 예를 들어,

/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

관련 정보