如何在bash中用下划线分割字符串并提取元素作为变量?

Dav*_*d Z 6 bash

假设我有一个像这样的字符串s=DNA128533_mutect2_filtered.vcf.gz。我如何提取DNA128533作为 ID 变量。

我试过

id=(cut -d_ -f1 <<< ${s}
echo $id
Run Code Online (Sandbox Code Playgroud)

似乎不起作用。一些建议?谢谢

Léa*_*ris 11

无需花费子 shell 来调用cut -d'_' -f1和使用 bashism <<< "$s"

POSIX shell 语法内置了通过变量扩展剥离尾部元素的功能,无需分叉昂贵的子 shell 或使用非标准的 Bash 特定的<<<"here string".

#!/usr/bin/env sh

s=DNA128533_mutect2_filtered.vcf.gz
id=${s%%_*}
echo "$id"
Run Code Online (Sandbox Code Playgroud)