次のテキストがあるとします。
GINC/weary/crazy/RMSD=2316
2番目のスラッシュ/
との間にあるものを抽出する方法があることを望んでいました/RMSD=2316
. つまり、文字列を探して、その文字列/RMSD=2316
とその前にあるスラッシュの間にあるものをすべて抽出します。
位置の仮定なしで sed を使用:
echo 'GINC/weary/crazy/RMSD=2316' | \
sed -n 's!.*/\([^/]*\)/RMSD=2316.*!\1!p'
とawk
:
awk -F/ '{for(i=1;i<=NF;i++) if($i=="RMSD=2316") print $(i-1)}' t
どうですか
cut -d/ -f3
-d/
スラッシュ区切り文字です
-f3
3 番目の列を意味します
これをマークしたのでbash
var='GINC/weary/crazy/RMSD=2316'
var1=${var%/RMSD=2316}
echo $var1
echo ${var1##*/}
Perl ソリューション:
str=GINC/weary/crazy/RMSD=2316
echo "$str" | perl -ne 'print "$1\n" if m|.*?/.*?/(.*)/RMSD=2316|'