假设我有这段文字:
GINC/weary/crazy/RMSD=2316
我希望有一种方法可以提取第二个正斜杠/
和/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
Perl solution:
str=GINC/weary/crazy/RMSD=2316
echo "$str" | perl -ne 'print "$1\n" if m|.*?/.*?/(.*)/RMSD=2316|'
既然你已经标记了这个bash
var='GINC/weary/crazy/RMSD=2316'
var1=${var%/RMSD=2316}
echo $var1
echo ${var1##*/}
您可以使用sed
:
sed 's/.*\/\([^\/]\+\)\/RMSD=2316/\1/'
这匹配所有以正斜杠开头的文本,捕获所有以 . 开头的非正斜杠字符/RMSD=2316
,并用捕获的字符替换整个匹配项。
关于什么
cut -d/ -f3
-d/
是斜线分隔符
-f3
表示第三列