假设我有这段文字:
GINC/weary/crazy/RMSD=2316
我希望有一种方法可以提取第二个正斜杠/
和/RMSD=2316
之间的内容。换句话说,我想查找字符串/RMSD=2316
并提取它与它之前的正斜杠之间的任何内容。
答案 0 :(得分:2)
使用sed,没有任何位置假设:
echo 'GINC/weary/crazy/RMSD=2316' | \
sed -n 's!.*/\([^/]*\)/RMSD=2316.*!\1!p'
答案 1 :(得分:2)
使用awk
:
awk -F/ '{for(i=1;i<=NF;i++) if($i=="RMSD=2316") print $(i-1)}' t
答案 2 :(得分:1)
怎么样?
cut -d/ -f3
-d/
是斜杠分隔符
-f3
表示第三栏
答案 3 :(得分:1)
由于您已标记此bash
var='GINC/weary/crazy/RMSD=2316'
var1=${var%/RMSD=2316}
echo $var1
echo ${var1##*/}
答案 4 :(得分:1)
您可以使用sed
:
sed 's/.*\/\([^\/]\+\)\/RMSD=2316/\1/'
这匹配所有导致正斜杠的文本,捕获所有导致/RMSD=2316
的非正斜杠字符,并用捕获的字符替换整个匹配。
答案 5 :(得分:1)
Perl解决方案:
str=GINC/weary/crazy/RMSD=2316
echo "$str" | perl -ne 'print "$1\n" if m|.*?/.*?/(.*)/RMSD=2316|'