1

假设我有这段文字:

GINC/weary/crazy/RMSD=2316

我希望有一种方法可以提取第二个正斜杠//RMSD=2316. 换句话说,我想查找字符串/RMSD=2316并提取它和它前面的正斜杠之间的任何内容。

4

6 回答 6

2

使用 sed,没有任何位置假设:

echo 'GINC/weary/crazy/RMSD=2316' | \
      sed -n 's!.*/\([^/]*\)/RMSD=2316.*!\1!p'
于 2013-06-27T21:11:39.133 回答
2

awk

awk -F/ '{for(i=1;i<=NF;i++) if($i=="RMSD=2316") print $(i-1)}' t
于 2013-06-27T21:13:39.793 回答
1

Perl solution:

str=GINC/weary/crazy/RMSD=2316
echo "$str" | perl -ne 'print "$1\n" if m|.*?/.*?/(.*)/RMSD=2316|'
于 2013-06-27T21:20:41.697 回答
1

既然你已经标记了这个bash

var='GINC/weary/crazy/RMSD=2316'
var1=${var%/RMSD=2316}
echo $var1
echo ${var1##*/}
于 2013-06-27T21:13:59.713 回答
1

您可以使用sed

sed 's/.*\/\([^\/]\+\)\/RMSD=2316/\1/'

这匹配所有以正斜杠开头的文本,捕获所有以 . 开头的非正斜杠字符/RMSD=2316,并用捕获的字符替换整个匹配项。

于 2013-06-27T21:15:04.827 回答
1

关于什么

cut -d/ -f3

-d/是斜线分隔符

-f3表示第三列

于 2013-06-27T21:09:14.450 回答