如何在字符串和字符之间提取文本呢?

时间:2013-06-27 21:07:05

标签: linux bash shell

假设我有这段文字:

GINC/weary/crazy/RMSD=2316

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

6 个答案:

答案 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|'