
두 개의 특수 문자 사이에 문자열을 얻고 싶습니다. 예를 들어,
/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