
2つの特殊文字の間の文字列を取得したい。例えば、
/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