提取第一个和第二个点字符实例之间的子字符串

时间:2019-03-21 15:38:40

标签: bash

我怎么只能在bash中提取部分:"cluster_000621" 在:

RATTUS_littleBoy.cluster_000621.ok.ok.ok.ok

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

尝试一下:

echo "RATTUS_littleBoy.cluster_000621.ok.ok.ok.ok" | sed "s/^[^.]*\.\([^.]*\)\..*/\1/g"

详细说明:

s/          # substitute
^           # begin of line
[^.]*       # all char without '.'
\.          # only '.'
\([^.]*\)   # all char without '.' in argument1
\.          # only '.'
.*          # all chars
/\1         # replace with argument 1
/g          # global, on the line

答案 1 :(得分:1)

使用awk,sed或cut。

使用剪切:

echo "RATTUS_littleBoy.cluster_000621.ok.ok.ok.ok" | cut -d. -f2

使用“。”分隔。分隔符

答案 2 :(得分:1)

bash的read内置函数将为您解析它,而不会产生另一个进程。

$: IFS="$IFS." read x val x <<< "RATTUS_littleBoy.cluster_000621.ok.ok.ok.ok"
$: echo $val
cluster_000621